summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2009-11-24 16:46:18 -0800
committerEric Anholt <eric@anholt.net>2009-11-24 16:47:48 -0800
commit1a26ea651b03759c8b5ba98dd8fc81aae227fbc9 (patch)
tree94b2a7129c89d0de3a1535c36ce988e679aa1cc3
parente4c30177553e4ade97e287dd9283c7d53362937c (diff)
Prevent ht->entries from doubling when rehashing.
-rw-r--r--hash_table.c1
-rw-r--r--tests/delete_management.c1
-rw-r--r--tests/insert_many.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/hash_table.c b/hash_table.c
index 4404084..af17336 100644
--- a/hash_table.c
+++ b/hash_table.c
@@ -205,6 +205,7 @@ hash_table_rehash(struct hash_table *ht, int new_size_index)
ht->size = hash_sizes[ht->size_index].size;
ht->rehash = hash_sizes[ht->size_index].rehash;
ht->max_entries = hash_sizes[ht->size_index].max_entries;
+ ht->entries = 0;
ht->deleted_entries = 0;
for (entry = old_ht.table;
diff --git a/tests/delete_management.c b/tests/delete_management.c
index cb35cd1..6203156 100644
--- a/tests/delete_management.c
+++ b/tests/delete_management.c
@@ -81,6 +81,7 @@ main(int argc, char **argv)
assert(key_value(entry->key) >= size - 100 &&
key_value(entry->key) < size);
}
+ assert(ht->entries == 100);
hash_table_destroy(ht, NULL);
diff --git a/tests/insert_many.c b/tests/insert_many.c
index 259818b..b46922c 100644
--- a/tests/insert_many.c
+++ b/tests/insert_many.c
@@ -65,6 +65,7 @@ main(int argc, char **argv)
assert(entry);
assert(key_value(entry->key) == i);
}
+ assert(ht->entries == size);
hash_table_destroy(ht, NULL);