diff --git a/src/adlist.c b/src/adlist.c index 7670b2c10..2e811e02e 100644 --- a/src/adlist.c +++ b/src/adlist.c @@ -269,9 +269,14 @@ list *listDup(list *orig) listRelease(copy); return NULL; } - } else + } else { value = node->value; + } + if (listAddNodeTail(copy, value) == NULL) { + /* Free value if dup succeed but listAddNodeTail failed. */ + if (copy->free) copy->free(value); + listRelease(copy); return NULL; }