diff --git a/linked_list.h b/linked_list.h index e23d16e..27489bd 100644 --- a/linked_list.h +++ b/linked_list.h @@ -338,13 +338,15 @@ void linked_list_remove(struct LinkedList*& node, void(*free_func)(T) = nullp } if (free_func) free_func(node->d); free(node); + node = nullptr; } template void linked_list_remove_before(struct LinkedList* node, void(*free_func)(T) = nullptr) { if (!node) return; while (node->prev) { - linked_list_remove(node->prev, free_func); + struct LinkedList* cur = node->prev; + linked_list_remove(cur, free_func); } }