diff --git a/src/adlist.c b/src/adlist.c index f432fd79e21..f926918639e 100644 --- a/src/adlist.c +++ b/src/adlist.c @@ -169,11 +169,12 @@ list *listAddNodeHeadDRAM(list *list, void *value) * On error, NULL is returned and no operation is performed (i.e. the * list remains unaltered). * On success the 'list' pointer you pass to the function is returned. */ -list *listAddNodeTail(list *list, void *value) +list *_listAddNodeTail(list *list, void *value, int on_dram) { listNode *node; - if ((node = zmalloc(sizeof(*node))) == NULL) + node = (on_dram == LIST_DRAM_VARIANT) ? zmalloc_dram(sizeof(*node)) : zmalloc(sizeof(*node)); + if (node == NULL) return NULL; node->value = value; if (list->len == 0) { @@ -189,6 +190,14 @@ list *listAddNodeTail(list *list, void *value) return list; } +list *listAddNodeTail(list *list, void *value) { + return _listAddNodeTail(list, value, LIST_GENERAL_VARIANT); +} + +list *listAddNodeTailDRAM(list *list, void *value) { + return _listAddNodeTail(list, value, LIST_DRAM_VARIANT); +} + list *listInsertNode(list *list, listNode *old_node, void *value, int after) { listNode *node; diff --git a/src/adlist.h b/src/adlist.h index 0f7b124d237..9ba48b72627 100644 --- a/src/adlist.h +++ b/src/adlist.h @@ -79,6 +79,7 @@ void listEmptyDRAM(list *list); list *listAddNodeHead(list *list, void *value); list *listAddNodeHeadDRAM(list *list, void *value); list *listAddNodeTail(list *list, void *value); +list *listAddNodeTailDRAM(list *list, void *value); list *listInsertNode(list *list, listNode *old_node, void *value, int after); void listDelNode(list *list, listNode *node); void listDelNodeDRAM(list *list, listNode *node);