From: Daniel Stenberg Date: Mon, 10 May 2004 09:17:50 +0000 (+0000) Subject: Curl_hash_add() was modified to clear up better in case of internal failure. X-Git-Tag: curl-7_12_0~148 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=887d78a9ad3d6326fec2894b98d042c9d2e7fcde;p=curl Curl_hash_add() was modified to clear up better in case of internal failure. When failing, it should not tamper at all with the data it was supposed to add to the cache. --- diff --git a/lib/hash.c b/lib/hash.c index fcc13ed28..51634e037 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -169,8 +169,14 @@ Curl_hash_add(curl_hash *h, char *key, size_t key_len, void *p) ++h->size; return p; /* return the new entry */ } - /* couldn't insert it, destroy the 'he' element again */ - hash_element_dtor(h, he); + /* + * Couldn't insert it, destroy the 'he' element and the key again. We + * don't call hash_element_dtor() since that would also call the + * "destructor" for the actual data 'p'. When we fail, we shall not touch + * that data. + */ + free(he->key); + free(he); } return NULL; /* failure */