From 8bea2bac950f6716fbf26bcd2c718e048f77c9b7 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Thu, 31 Jul 2025 15:32:44 -0700 Subject: Handle uninitialized pool. Pending test. --- mempool/src/mempool.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mempool/src/mempool.c b/mempool/src/mempool.c index c398c4f..bae4fc9 100644 --- a/mempool/src/mempool.c +++ b/mempool/src/mempool.c @@ -9,6 +9,7 @@ /// All of the blocks in the pool are assumed free. static void init_free_list(mempool* pool) { assert(pool); + assert(pool->num_blocks > 0); for (size_t i = 0; i < pool->num_blocks - 1; ++i) { pool->block_info[i].next_free = i + 1; } @@ -64,6 +65,7 @@ void mempool_del_(mempool* pool) { } } +// TODO: Add a unit test for clearing a pool that has not been initialized. void mempool_clear_(mempool* pool) { assert(pool); pool->head = 0; @@ -71,7 +73,9 @@ void mempool_clear_(mempool* pool) { pool->num_used_blocks = 0; memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes); memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo)); - init_free_list(pool); + if (pool->num_blocks > 0) { + init_free_list(pool); + } } void* mempool_alloc_(mempool* pool) { -- cgit v1.2.3