Attached patch grows a memory stream by at least a quarter of its original capacity.
Vincent
Index: streams.inc =================================================================== --- streams.inc (revision 5577) +++ streams.inc (working copy) @@ -535,11 +535,17 @@ function TMemoryStream.Realloc(var NewCapacity: Longint): Pointer; begin - // round off to block size. + If NewCapacity<0 Then NewCapacity:=0 else - NewCapacity := (NewCapacity + (TMSGrow-1)) and not (TMSGROW-1); + begin + // if growing, grow at least a quarter + if (NewCapacity>FCapacity) and (NewCapacity < (5*FCapacity) div 4) then + NewCapacity := (5*FCapacity) div 4; + // round off to block size. + NewCapacity := (NewCapacity + (TMSGrow-1)) and not (TMSGROW-1); + end; // Only now check ! If NewCapacity=FCapacity then Result:=FMemory
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel