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);
*/
static inline void maybe_grow(HashSet *self)
{
size_t resize_to;
if (LIKELY(self->num_elements + 1 <= self->enlarge_threshold))
return;
/* double table size */
resize_to = self->num_buckets * 2;
size_t resize_to;
if (self->num_elements - self->num_deleted + 2 > self->enlarge_threshold) {
/* double table size */
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);
}
......
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