Explorar o código

hashindex: always have at least 1 empty bucket

avoid rounding / integer conversion issues bringing this down to 0.
Thomas Waldmann %!s(int64=2) %!d(string=hai) anos
pai
achega
4fc7815f11
Modificáronse 1 ficheiros con 4 adicións e 2 borrados
  1. 4 2
      src/borg/_hashindex.c

+ 4 - 2
src/borg/_hashindex.c

@@ -253,8 +253,10 @@ int get_upper_limit(int num_buckets){
 }
 
 int get_min_empty(int num_buckets){
-    /* Differently from load, the effective load also considers tombstones (deleted buckets). */
-    return (int)(num_buckets * (1.0 - HASH_MAX_EFF_LOAD));
+    /* Differently from load, the effective load also considers tombstones (deleted buckets).
+     * We always add 1, so this never can return 0 (0 empty buckets would be a bad HT state).
+     */
+    return 1 + (int)(num_buckets * (1.0 - HASH_MAX_EFF_LOAD));
 }
 
 int size_idx(int size){