summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2021-12-08 13:22:44 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-12-09 10:18:41 +0100
commit8d8f384f32c575f44f0d31020ca9a5378d460852 (patch)
treecc06373297f4f3b9cb6a753d73b41c68abdbe691
parentf443834c7a573e2a819738410b7317d54459f979 (diff)
downloadcurl-8d8f384f32c575f44f0d31020ca9a5378d460852.tar.gz
hash: add asserts to help detect bad usage
For example trying to add entries after the hash has been "cleaned up" Closes #8115
-rw-r--r--lib/hash.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/hash.c b/lib/hash.c
index 12e7aa5f2..f04c46284 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -110,7 +110,9 @@ Curl_hash_add(struct Curl_hash *h, void *key, size_t key_len, void *p)
{
struct Curl_hash_element *he;
struct Curl_llist_element *le;
- struct Curl_llist *l = FETCH_LIST(h, key, key_len);
+ struct Curl_llist *l;
+ DEBUGASSERT(h->slots);
+ l = FETCH_LIST(h, key, key_len);
for(le = l->head; le; le = le->next) {
he = (struct Curl_hash_element *) le->ptr;
@@ -139,7 +141,9 @@ Curl_hash_add(struct Curl_hash *h, void *key, size_t key_len, void *p)
int Curl_hash_delete(struct Curl_hash *h, void *key, size_t key_len)
{
struct Curl_llist_element *le;
- struct Curl_llist *l = FETCH_LIST(h, key, key_len);
+ struct Curl_llist *l;
+ DEBUGASSERT(h->slots);
+ l = FETCH_LIST(h, key, key_len);
for(le = l->head; le; le = le->next) {
struct Curl_hash_element *he = le->ptr;
@@ -163,6 +167,7 @@ Curl_hash_pick(struct Curl_hash *h, void *key, size_t key_len)
struct Curl_llist *l;
if(h) {
+ DEBUGASSERT(h->slots);
l = FETCH_LIST(h, key, key_len);
for(le = l->head; le; le = le->next) {
struct Curl_hash_element *he = le->ptr;