* catch exceptions in all variants of TextToFloat properly

* force x87 exceptions to be thrown on all platforms using x87

git-svn-id: trunk@44070 -
This commit is contained in:
florian 2020-01-30 21:23:10 +00:00
parent d9f4c85d2e
commit f1eccca3a6

View File

@ -1213,7 +1213,18 @@ Begin
P:=Pos(FormatSettings.DecimalSeparator,S);
If (P<>0) Then
S[P] := '.';
Val(trim(S),Value,E);
try
Val(trim(S),Value,E);
{ on x87, a floating point exception may be pending in case of an invalid
input value -> trigger it now }
{$if defined(cpui386) or (defined(cpux86_64) and not(defined(win64))) or defined(cpui8086)}
asm
fwait
end;
{$endif}
except
E:=1;
end;
Result:=(E=0);
End;
@ -1273,7 +1284,7 @@ Begin
end;
{ on x87, a floating point exception may be pending in case of an invalid
input value -> trigger it now }
{$ifdef cpux86}
{$if defined(cpui386) or (defined(cpux86_64) and not(defined(win64))) or defined(cpui8086)}
asm
fwait
end;