diff options
author | Aurelien Foret <aurelien@archlinux.org> | 2005-05-01 22:45:07 +0200 |
---|---|---|
committer | Aurelien Foret <aurelien@archlinux.org> | 2005-05-01 22:45:07 +0200 |
commit | 4df92783284eca3950cc78c6c78e522098074110 (patch) | |
tree | f0ea4d46ccf168ef399fd959a51cbf52066bd327 | |
parent | a73427fc0bc8c00ed3e6478ac57ac048cec4afdd (diff) | |
download | pacman-4df92783284eca3950cc78c6c78e522098074110.tar.gz pacman-4df92783284eca3950cc78c6c78e522098074110.tar.xz |
reimplemented list_free() a safer way
-rw-r--r-- | src/pacman/list.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/pacman/list.c b/src/pacman/list.c index c639e124..1d32b0b8 100644 --- a/src/pacman/list.c +++ b/src/pacman/list.c @@ -45,17 +45,14 @@ list_t *list_new() void list_free(list_t *list) { - if(list == NULL) { - return; - } - if(list->data != NULL) { - free(list->data); - list->data = NULL; - } - if(list->next != NULL) { - list_free(list->next); + list_t *ptr, *it = list; + + while(it) { + ptr = it->next; + free(it->data); + free(it); + it = ptr; } - free(list); return; } |