Bladeren bron

+ Patch from Colin Western to fix uninitialized memory reads

michael 20 jaren geleden
bovenliggende
commit
5c047389a6
1 gewijzigde bestanden met toevoegingen van 18 en 14 verwijderingen
  1. 18 14
      rtl/inc/sstrings.inc

+ 18 - 14
rtl/inc/sstrings.inc

@@ -795,11 +795,11 @@ fpc_Val_Real_ShortStr:=fpc_Val_Real_ShortStr*10+(ord(s[code])-ord('0'));
       inc(code);
    end;
 { Decimal ? }
-  if (s[code]='.') and (length(s)>=code) then
+  if (length(s)>=code) and (s[code]='.') then
    begin
       hd:=1.0;
       inc(code);
-      while (s[code] in ['0'..'9']) and (length(s)>=code) do
+      while (length(s)>=code) and (s[code] in ['0'..'9']) do
         begin
            { Read fractional part. }
            flags:=flags or 2;
@@ -816,23 +816,24 @@ fpc_Val_Real_ShortStr:=fpc_Val_Real_ShortStr*10+(ord(s[code])-ord('0'));
       exit;
    end;
  { Exponent ? }
-  if (upcase(s[code])='E') and (length(s)>=code) then
+  if (length(s)>=code) and (upcase(s[code])='E') then
    begin
       inc(code);
-      if s[code]='+' then
-        inc(code)
-      else
-        if s[code]='-' then
-         begin
-           esign:=-1;
-           inc(code);
-         end;
-      if not(s[code] in ['0'..'9']) or (length(s)<code) then
+      if Length(s) >= code then
+        if s[code]='+' then
+          inc(code)
+        else
+          if s[code]='-' then
+           begin
+             esign:=-1;
+             inc(code);
+           end;
+      if (length(s)<code) or not(s[code] in ['0'..'9']) then
         begin
            fpc_Val_Real_ShortStr:=0.0;
            exit;
         end;
-      while (s[code] in ['0'..'9']) and (length(s)>=code) do
+      while (length(s)>=code) and (s[code] in ['0'..'9']) do
         begin
            exponent:=exponent*10;
            exponent:=exponent+ord(s[code])-ord('0');
@@ -880,7 +881,10 @@ end;
 
 {
   $Log$
-  Revision 1.34  2005-02-25 12:34:46  peter
+  Revision 1.35  2005-03-20 12:45:19  michael
+  + Patch from Colin Western to fix uninitialized memory reads
+
+  Revision 1.34  2005/02/25 12:34:46  peter
     * added HexStr(Pointer)
 
   Revision 1.33  2005/02/14 17:13:27  peter