diff options
| author | 3gg <3gg@shellblade.net> | 2025-07-31 15:32:44 -0700 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2025-07-31 15:32:44 -0700 |
| commit | 8bea2bac950f6716fbf26bcd2c718e048f77c9b7 (patch) | |
| tree | 9625b0db3d309615d7ab9eccbe96d5b13f2860c5 | |
| parent | b905c803f35ee41ed894a108cc8fa114a2a58b88 (diff) | |
Handle uninitialized pool. Pending test.
| -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) { |
