mirror of
https://github.com/curl/curl.git
synced 2026-04-14 22:21:41 +03:00
llist: no longer uses malloc
The 'list element' struct now has to be within the data that is being added to the list. Removes 16.6% (tiny) mallocs from a simple HTTP transfer. (96 => 80) Also removed return codes since the llist functions can't fail now. Test 1300 updated accordingly. Closes #1435
This commit is contained in:
parent
cbb59ed9ce
commit
cbae73e1dd
13 changed files with 165 additions and 203 deletions
14
lib/hash.c
14
lib/hash.c
|
|
@ -124,17 +124,9 @@ Curl_hash_add(struct curl_hash *h, void *key, size_t key_len, void *p)
|
|||
|
||||
he = mk_hash_element(key, key_len, p);
|
||||
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 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);
|
||||
Curl_llist_insert_next(l, l->tail, he, &he->list);
|
||||
++h->size;
|
||||
return p; /* return the new entry */
|
||||
}
|
||||
|
||||
return NULL; /* failure */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue