diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-04-18 01:18:03 +0200 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-04-22 02:47:36 +0200 |
commit | 112fbe00a4e7fe23b7314485304df7a9b029fda6 (patch) | |
tree | 4a50c891a39a74c453940a6ae5dbef90a1558603 | |
parent | fb5f9d0155d63451bd16d7d50204da90ff604949 (diff) | |
download | calcurse-112fbe00a4e7fe23b7314485304df7a9b029fda6.zip |
llist.c: Nullify pointers after free()'ing.
* Set all data members to "NULL" in llist_free_inner() after freeing
them. Altough we normally shouldn't continue working with a list that
already went through llist_free_inner(), this will protect against
dangling pointer bugs in case anyone will ever come up with the idea
of doing so.
* Set list head to "NULL" in llist_free(), basically to put the list
into an initialized state.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r-- | src/llist.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/llist.c b/src/llist.c index 021de82..e24f9fc 100644 --- a/src/llist.c +++ b/src/llist.c @@ -52,6 +52,8 @@ llist_free (llist_t *l) t = i->next; mem_free (i); } + + l->head = NULL; } void @@ -62,7 +64,10 @@ llist_free_inner (llist_t *l, llist_fn_free_t fn_free) for (i = l->head; i; i = i->next) { if (i->data) - fn_free(i->data); + { + fn_free(i->data); + i->data = NULL; + } } } |