diff --git a/src/inotify.c b/src/inotify.c index 86ead25..f174590 100644 --- a/src/inotify.c +++ b/src/inotify.c @@ -224,6 +224,9 @@ void notify_exit() { rbtree_free(&tree); if (event_queue) { + notify_event *e; + while(e = queue_dequeue(event_queue)) + notify_event_del(e); queue_destroy(event_queue); event_queue = NULL; } diff --git a/src/queue.c b/src/queue.c index 8a09b69..bf16bb7 100644 --- a/src/queue.c +++ b/src/queue.c @@ -70,28 +70,10 @@ queue_t queue_init() { return q; } -void queue_clear(queue_t q) { - - struct node *t, *n; - - if (q == NULL) - return; - - n = q->tail.n; - - while(n) { - t = n->next; - free(n); - n = t; - } - - init(q); -} - void queue_destroy(queue_t q) { - queue_clear(q); - free(q); + if (q) + free(q); } void queue_enqueue(queue_t q, void *obj) { diff --git a/src/queue.h b/src/queue.h index 1e2b1b4..3a0ab5c 100644 --- a/src/queue.h +++ b/src/queue.h @@ -28,8 +28,6 @@ int queue_isempty(queue_t q); size_t queue_num_items(queue_t q); -void queue_clear(queue_t q); - void queue_destroy(queue_t q); #endif /* __QUEUE_H */ diff --git a/test/t_queue.c b/test/t_queue.c index c5b9af3..d7147b7 100644 --- a/test/t_queue.c +++ b/test/t_queue.c @@ -27,7 +27,7 @@ int main() { assert(queue_isempty(q) == 0); - queue_clear(q); + while(queue_dequeue(q)); assert(queue_isempty(q));