diff options
-rw-r--r-- | mempool/src/mempool.c | 6 |
1 files changed, 5 insertions, 1 deletions
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 @@ | |||
9 | /// All of the blocks in the pool are assumed free. | 9 | /// All of the blocks in the pool are assumed free. |
10 | static void init_free_list(mempool* pool) { | 10 | static void init_free_list(mempool* pool) { |
11 | assert(pool); | 11 | assert(pool); |
12 | assert(pool->num_blocks > 0); | ||
12 | for (size_t i = 0; i < pool->num_blocks - 1; ++i) { | 13 | for (size_t i = 0; i < pool->num_blocks - 1; ++i) { |
13 | pool->block_info[i].next_free = i + 1; | 14 | pool->block_info[i].next_free = i + 1; |
14 | } | 15 | } |
@@ -64,6 +65,7 @@ void mempool_del_(mempool* pool) { | |||
64 | } | 65 | } |
65 | } | 66 | } |
66 | 67 | ||
68 | // TODO: Add a unit test for clearing a pool that has not been initialized. | ||
67 | void mempool_clear_(mempool* pool) { | 69 | void mempool_clear_(mempool* pool) { |
68 | assert(pool); | 70 | assert(pool); |
69 | pool->head = 0; | 71 | pool->head = 0; |
@@ -71,7 +73,9 @@ void mempool_clear_(mempool* pool) { | |||
71 | pool->num_used_blocks = 0; | 73 | pool->num_used_blocks = 0; |
72 | memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes); | 74 | memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes); |
73 | memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo)); | 75 | memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo)); |
74 | init_free_list(pool); | 76 | if (pool->num_blocks > 0) { |
77 | init_free_list(pool); | ||
78 | } | ||
75 | } | 79 | } |
76 | 80 | ||
77 | void* mempool_alloc_(mempool* pool) { | 81 | void* mempool_alloc_(mempool* pool) { |