diff --git a/linkedlist.c b/linkedlist.c index f98429b..a1f9936 100644 --- a/linkedlist.c +++ b/linkedlist.c @@ -48,8 +48,20 @@ void linkedlist_print(LinkedList *head) { tmp = tmp->next; } } -void free_list(LinkedList *head) { +void free_list(LinkedList **head) { + LinkedList *ptr = *head; + LinkedList *prev = NULL; + + if (ptr == NULL) + return; + + while (ptr != NULL) { + prev = ptr; + ptr = ptr->next; + free(prev->data); + free(prev); + } } void free_node(LinkedList *node) { free(node->data); diff --git a/linkedlist.h b/linkedlist.h index ef3a4eb..3a6f0cc 100644 --- a/linkedlist.h +++ b/linkedlist.h @@ -18,4 +18,5 @@ typedef struct linkedlist { LinkedList *linkedlist_new(); void linkedlist_add(LinkedList **head, char *data); void linkedlist_print(LinkedList *head); +void free_list(LinkedList **head); #endif //HOSTBLOCKER_LINKEDLIST_H diff --git a/main.c b/main.c index a5f4c0a..c62f98a 100644 --- a/main.c +++ b/main.c @@ -192,6 +192,8 @@ int main(int argc, char **argv) // daemonize(); } } + + free_list(&hosts); } /**