Commit 6b9e6714 authored by Matthias Braun's avatar Matthias Braun
Browse files

don't grow the hashset if it just clobbered with deleted entries

parent b85da3a1
...@@ -346,13 +346,20 @@ static inline void resize(HashSet *self, size_t new_size); ...@@ -346,13 +346,20 @@ static inline void resize(HashSet *self, size_t new_size);
*/ */
static inline void maybe_grow(HashSet *self) static inline void maybe_grow(HashSet *self)
{ {
size_t resize_to;
if (LIKELY(self->num_elements + 1 <= self->enlarge_threshold)) if (LIKELY(self->num_elements + 1 <= self->enlarge_threshold))
return; return;
size_t resize_to;
if (self->num_elements - self->num_deleted + 2 > self->enlarge_threshold) {
/* double table size */ /* double table size */
resize_to = self->num_buckets * 2; resize_to = self->num_buckets * 2;
if (resize_to <= self->num_buckets) {
abort();
}
} else {
/* no need to resize, we just clean up the deleted entries */
resize_to = self->num_buckets;
}
resize(self, resize_to); resize(self, resize_to);
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment