Parcourir la source

* Observe max capacity. Resolves issue #40720

Michael Van Canneyt il y a 1 an
Parent
commit
c17cbbe788
1 fichiers modifiés avec 5 ajouts et 0 suppressions
  1. 5 0
      rtl/objpas/fgl.pp

+ 5 - 0
rtl/objpas/fgl.pp

@@ -684,6 +684,11 @@ begin
   if FCapacity > 3 then IncSize := IncSize + 4;
   if FCapacity > 8 then IncSize := IncSize + 8;
   if FCapacity > 127 then Inc(IncSize, FCapacity shr 2);
+  if FCapacity+IncSize>MaxListSize then
+    IncSize:=MaxListSize-FCapacity;
+  // If we were at max capacity already, force error.
+  If IncSize<=0 then
+    IncSize:=1; // Will trigger error 
   SetCapacity(FCapacity + IncSize);
   Result := Self;
 end;