Browse Source

* Do not let FItemsTreshold become negative. Fixes issue #40561

Michaël Van Canneyt 3 days ago
parent
commit
6d4862233b
1 changed files with 4 additions and 1 deletions
  1. 4 1
      packages/rtl-generics/src/inc/generics.dictionaries.inc

+ 4 - 1
packages/rtl-generics/src/inc/generics.dictionaries.inc

@@ -364,8 +364,11 @@ procedure TOpenAddressing<OPEN_ADDRESSING_CONSTRAINTS>.UpdateItemsThreshold(ASiz
 begin
 begin
   if ASize = $40000000 then
   if ASize = $40000000 then
     FItemsThreshold := $40000001
     FItemsThreshold := $40000001
-  else
+  else begin
     FItemsThreshold := Pred(Round(ASize * FMaxLoadFactor));
     FItemsThreshold := Pred(Round(ASize * FMaxLoadFactor));
+    if FItemsThreshold < 0 then
+      FItemsThreshold := 0;
+  end;
 end;
 end;
 
 
 procedure TOpenAddressing<OPEN_ADDRESSING_CONSTRAINTS>.AddItem(var AItem: TItem; const AKey: TKey;
 procedure TOpenAddressing<OPEN_ADDRESSING_CONSTRAINTS>.AddItem(var AItem: TItem; const AKey: TKey;