2
0
Эх сурвалжийг харах

hashindex: always have at least 1 empty bucket

avoid rounding / integer conversion issues bringing this down to 0.
Thomas Waldmann 2 жил өмнө
parent
commit
4fc7815f11

+ 4 - 2
src/borg/_hashindex.c

@@ -253,8 +253,10 @@ int get_upper_limit(int num_buckets){
 }
 }
 
 
 int get_min_empty(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){
 int size_idx(int size){