void list_destroy(list_t * new_list) { list_node_t *iter = NULL; list_node_t *next = NULL; return_if_fail(new_list != NULL); dlist_lock(new_list); iter = new_list->head.next; while (iter != &new_list->head) { next = iter->next; list_destroy_node(new_list, iter); iter = next; } new_list->head.next = &new_list->head; new_list->head.prev = &new_list->head; dlist_destroy_locker(new_list); SAFE_FREE(new_list); return; }
void dlist_destroy(DList* thiz) { DListNode* iter = NULL; DListNode* next = NULL; return_if_fail(thiz != NULL); dlist_lock(thiz); iter = thiz->first; while(iter != NULL) { next = iter->next; dlist_destroy_node(thiz, iter); iter = next; } thiz->first = NULL; dlist_destroy_locker(thiz); SAFE_FREE(thiz); return; }