From 947e6563674b5318b909189168a9640114d8f7ba Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 15 Dec 2003 15:21:13 +0000 Subject: make sure that hash_add() has no allocated resources left in case it returns NULL --- lib/hash.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'lib/hash.c') diff --git a/lib/hash.c b/lib/hash.c index 89078d1f3..786228f8b 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -156,14 +156,15 @@ Curl_hash_add(curl_hash *h, char *key, size_t key_len, void *p) } he = mk_hash_element(key, key_len, p); - if (!he) - return NULL; /* failure */ - - if (Curl_llist_insert_next(l, l->tail, he)) { - ++h->size; - return p; /* return the new entry */ + if (he) { + if(Curl_llist_insert_next(l, l->tail, he)) { + ++h->size; + return p; /* return the new entry */ + } + /* couldn't insert it, destroy the 'he' element again */ + hash_element_dtor(h, he); } - + h->dtor(p); /* remove the NEW entry */ return NULL; /* failure */ } -- cgit v1.2.3