}
static void
-hash2_remove_value_p(struct hash2_table *hash, struct hash2_value **valuep,
- bool allow_resize)
+hash2_remove_value_p(struct hash2_table *hash, struct hash2_value **valuep)
{
struct hash2_value *deleted_value;
hash->deleted_values = deleted_value;
hash->count--;
- if (allow_resize)
- hash2_resize(hash, FALSE);
}
void hash2_remove(struct hash2_table *hash, const void *key)
while (*valuep != NULL) {
if ((*valuep)->key_hash == key_hash &&
hash->key_compare_cb(key, (*valuep) + 1, hash->context)) {
- hash2_remove_value_p(hash, valuep, TRUE);
+ hash2_remove_value_p(hash, valuep);
+ hash2_resize(hash, FALSE);
return;
}
valuep = &(*valuep)->next;
next = (*valuep)->next;
/* don't allow resizing, otherwise iterating would
break completely */
- hash2_remove_value_p(hash, valuep, FALSE);
+ hash2_remove_value_p(hash, valuep);
iter->next_value = next;
return;
}