aboutsummaryrefslogtreecommitdiff
path: root/lib/llist.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/llist.c')
-rw-r--r--lib/llist.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/llist.c b/lib/llist.c
index 4f9bc220..9adb64e0 100644
--- a/lib/llist.c
+++ b/lib/llist.c
@@ -14,6 +14,10 @@ void llist_free(void *list, void (*freeit)(void *data))
while (list) {
void *pop = llist_pop(&list);
if (freeit) freeit(pop);
+ else free(pop);
+
+ // End doubly linked list too.
+ if (list==pop) break;
}
}
@@ -32,7 +36,7 @@ void *llist_pop(void *list)
}
// Add an entry to the end off a doubly linked list
-void dlist_add(struct double_list **list, char *data)
+struct double_list *dlist_add(struct double_list **list, char *data)
{
struct double_list *line = xmalloc(sizeof(struct double_list));
@@ -43,4 +47,6 @@ void dlist_add(struct double_list **list, char *data)
(*list)->prev->next = line;
(*list)->prev = line;
} else *list = line->next = line->prev = line;
+
+ return line;
}