Prechádzať zdrojové kódy

* Attempt to avoid overflow when reallocating stream

git-svn-id: trunk@34518 -
michael 9 rokov pred
rodič
commit
bc6819aa91
1 zmenil súbory, kde vykonal 6 pridanie a 2 odobranie
  1. 6 2
      rtl/objpas/classes/streams.inc

+ 6 - 2
rtl/objpas/classes/streams.inc

@@ -667,14 +667,18 @@ end;
 
 function TMemoryStream.Realloc(var NewCapacity: PtrInt): Pointer;
 
+Var
+  GC : PtrInt;
+
 begin
   If NewCapacity<0 Then
     NewCapacity:=0
   else
     begin
+      GC:=FCapacity + (FCapacity div 4);
       // if growing, grow at least a quarter
-      if (NewCapacity>FCapacity) and (NewCapacity < (5*FCapacity) div 4) then
-        NewCapacity := (5*FCapacity) div 4;
+      if (NewCapacity>FCapacity) and (NewCapacity < GC) then
+        NewCapacity := GC;
       // round off to block size.
       NewCapacity := (NewCapacity + (TMSGrow-1)) and not (TMSGROW-1);
     end;