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 */