mirror of
https://github.com/curl/curl.git
synced 2026-04-14 22:31: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
15
lib/llist.h
15
lib/llist.h
|
|
@ -29,7 +29,6 @@ typedef void (*curl_llist_dtor)(void *, void *);
|
|||
|
||||
struct curl_llist_element {
|
||||
void *ptr;
|
||||
|
||||
struct curl_llist_element *prev;
|
||||
struct curl_llist_element *next;
|
||||
};
|
||||
|
|
@ -37,21 +36,19 @@ struct curl_llist_element {
|
|||
struct curl_llist {
|
||||
struct curl_llist_element *head;
|
||||
struct curl_llist_element *tail;
|
||||
|
||||
curl_llist_dtor dtor;
|
||||
|
||||
size_t size;
|
||||
};
|
||||
|
||||
void Curl_llist_init(struct curl_llist *, curl_llist_dtor);
|
||||
int Curl_llist_insert_next(struct curl_llist *, struct curl_llist_element *,
|
||||
const void *);
|
||||
int Curl_llist_remove(struct curl_llist *, struct curl_llist_element *,
|
||||
void *);
|
||||
void Curl_llist_insert_next(struct curl_llist *, struct curl_llist_element *,
|
||||
const void *, struct curl_llist_element *node);
|
||||
void Curl_llist_remove(struct curl_llist *, struct curl_llist_element *,
|
||||
void *);
|
||||
size_t Curl_llist_count(struct curl_llist *);
|
||||
void Curl_llist_destroy(struct curl_llist *, void *);
|
||||
int Curl_llist_move(struct curl_llist *, struct curl_llist_element *,
|
||||
struct curl_llist *, struct curl_llist_element *);
|
||||
void Curl_llist_move(struct curl_llist *, struct curl_llist_element *,
|
||||
struct curl_llist *, struct curl_llist_element *);
|
||||
|
||||
#endif /* HEADER_CURL_LLIST_H */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue