Преглед на файлове

* Observe max capacity. Resolves issue #40720

Michael Van Canneyt преди 1 година
родител
ревизия
c17cbbe788
променени са 1 файла, в които са добавени 5 реда и са изтрити 0 реда
  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;