summaryrefslogtreecommitdiff
path: root/io_context.c
diff options
context:
space:
mode:
authorMikhail Burakov <mburakov@mailbox.org>2024-09-21 09:53:47 +0200
committerMikhail Burakov <mburakov@mailbox.org>2024-09-21 09:53:47 +0200
commit2486ad6913fa3ad6488752a2c9414a239b18a936 (patch)
tree5729fa1df12e80674069a4fdcd97a11750adee38 /io_context.c
parent9fd565fc7ab950ac61f7ea7c0376936aa04aa2ea (diff)
Fix queues destruction in io context
Diffstat (limited to 'io_context.c')
-rw-r--r--io_context.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/io_context.c b/io_context.c
index 38a7d13..8b9aa7c 100644
--- a/io_context.c
+++ b/io_context.c
@@ -295,9 +295,11 @@ void IoContextDestroy(struct IoContext* io_context) {
assert(thrd_join(io_context->thread, NULL) == thrd_success);
cnd_destroy(&io_context->cond);
mtx_destroy(&io_context->mutex);
- for (void* item; QueuePop(&io_context->prio, &item); free(item));
+ for (void* item; QueuePop(&io_context->prio, &item);)
+ ((struct Proto*)item)->Destroy(item);
QueueDestroy(&io_context->prio);
- for (void* item; QueuePop(&io_context->queue, &item); free(item));
+ for (void* item; QueuePop(&io_context->queue, &item);)
+ ((struct Proto*)item)->Destroy(item);
QueueDestroy(&io_context->queue);
assert(!close(io_context->fd));
free(io_context);