]> granicus.if.org Git - curl/commitdiff
make sure that hash_add() has no allocated resources left in case it
authorDaniel Stenberg <daniel@haxx.se>
Mon, 15 Dec 2003 15:21:13 +0000 (15:21 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 15 Dec 2003 15:21:13 +0000 (15:21 +0000)
returns NULL

lib/hash.c

index 89078d1f370318de25787925e5e2642f2fde9668..786228f8b4b8dd3a1c04b7ed121662e8c00aa211 100644 (file)
@@ -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 */
 }