From 887d78a9ad3d6326fec2894b98d042c9d2e7fcde Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 10 May 2004 09:17:50 +0000 Subject: 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. --- lib/hash.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib') 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 */ -- cgit v1.2.3