소스 검색

* 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;