Explorar o código

Merge pull request #4969 from ThomasWaldmann/fix-hashindex-set

fix bug in hashindex_set on resize, fixes #4829
TW %!s(int64=5) %!d(string=hai) anos
pai
achega
0a4cc48735
Modificáronse 1 ficheiros con 10 adicións e 0 borrados
  1. 10 0
      src/borg/_hashindex.c

+ 10 - 0
src/borg/_hashindex.c

@@ -586,6 +586,16 @@ hashindex_set(HashIndex *index, const unsigned char *key, const unsigned char *v
                 if(!hashindex_resize(index, index->num_buckets)) {
                     return 0;
                 }
+                /* we have just built a fresh hashtable and removed all tombstones,
+                 * so we only have EMPTY or USED buckets, but no DELETED ones any more.
+                 */
+                idx = start_idx = hashindex_index(index, key);
+                while(!BUCKET_IS_EMPTY(index, idx)) {
+                    idx++;
+                    if (idx >= index->num_buckets){
+                        idx -= index->num_buckets;
+                    }
+                }
             }
         }
         ptr = BUCKET_ADDR(index, idx);