Ver código fonte

bugfix: do not resize hashindex with wrong num_empty

otherwise we would lose the decrement operation on num_empty.
Thomas Waldmann 2 anos atrás
pai
commit
9bf352d00c
1 arquivos alterados com 2 adições e 2 exclusões
  1. 2 2
      src/borg/_hashindex.c

+ 2 - 2
src/borg/_hashindex.c

@@ -749,8 +749,7 @@ hashindex_set(HashIndex *index, const unsigned char *key, const void *value)
         }
         idx = start_idx;
         if(BUCKET_IS_EMPTY(index, idx)){
-            index->num_empty--;
-            if(index->num_empty < index->min_empty) {
+            if(index->num_empty <= index->min_empty) {
                 /* too many tombstones here / not enough empty buckets, do a same-size rebuild */
                 if(!hashindex_resize(index, index->num_buckets)) {
                     return 0;
@@ -763,6 +762,7 @@ hashindex_set(HashIndex *index, const unsigned char *key, const void *value)
                 assert(BUCKET_IS_EMPTY(index, start_idx));
                 idx = start_idx;
             }
+            index->num_empty--;
         } else {
             /* Bucket must be either EMPTY (see above) or DELETED. */
             assert(BUCKET_IS_DELETED(index, idx));