rewrote list_free to not be recursive anymore

(it can trigger segmentation faults when freeing long lists)
This commit is contained in:
Aurelien Foret 2005-03-26 20:56:08 +00:00
parent 7767095c59
commit 03f2ec2d0b

View file

@ -68,18 +68,14 @@ PMList* pm_list_new()
void pm_list_free(PMList *list) void pm_list_free(PMList *list)
{ {
if(list == NULL) { PMList *ptr, *it = list;
return;
while(it) {
ptr = it->next;
free(it->data);
free(it);
it = ptr;
} }
if(list->data != NULL) {
free(list->data);
list->data = NULL;
}
if(list->next != NULL) {
pm_list_free(list->next);
}
free(list);
return;
} }
PMList* pm_list_add(PMList *list, void *data) PMList* pm_list_add(PMList *list, void *data)