summaryrefslogtreecommitdiff
path: root/data_structures.c
diff options
context:
space:
mode:
Diffstat (limited to 'data_structures.c')
-rw-r--r--data_structures.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/data_structures.c b/data_structures.c
index 970d966..19f4efd 100644
--- a/data_structures.c
+++ b/data_structures.c
@@ -287,7 +287,6 @@ static void str_hash_table_grow(StrHashTable *t) {
}
arr_cleara(&t->slots, t->allocr);
t->slots = new_slots;
- slots_cap = new_slots_cap;
}
}
@@ -340,12 +339,16 @@ static void str_hash_table_free(StrHashTable *t) {
}
static StrHashTableSlot *str_hash_table_get_(StrHashTable *t, const char *str, size_t len) {
+ size_t nslots = arr_len(t->slots);
+ if (!nslots) return NULL;
size_t slot_index = str_hash(str, len) % arr_len(t->slots);
return *str_hash_table_slot_get(t->slots, str, len, slot_index);
}
static inline void *str_hash_table_get(StrHashTable *t, const char *str, size_t len) {
- return str_hash_table_get_(t, str, len)->data;
+ StrHashTableSlot *slot = str_hash_table_get_(t, str, len);
+ if (!slot) return NULL;
+ return slot->data;
}
#ifdef TOC_DEBUG
@@ -367,6 +370,7 @@ static void str_hash_table_test(void) {
*s = 123;
int *u = str_hash_table_get(&t, "Hello", 5);
assert(p == u);
+ assert(!str_hash_table_get(&t, "Hellopf", 7));
str_hash_table_free(&t);
}
#endif