diff options
Diffstat (limited to 'io_context.c')
-rw-r--r-- | io_context.c | 6 |
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); |