Browse Source

* Observe max capacity. Resolves issue #40720

Michael Van Canneyt 1 year ago
parent
commit
c17cbbe788
1 changed files with 5 additions and 0 deletions
  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;