aboutsummaryrefslogtreecommitdiff
path: root/mempool
diff options
context:
space:
mode:
Diffstat (limited to 'mempool')
-rw-r--r--mempool/src/mempool.c11
-rw-r--r--mempool/test/mempool_test.c10
2 files changed, 13 insertions, 8 deletions
diff --git a/mempool/src/mempool.c b/mempool/src/mempool.c
index bae4fc9..2c3c725 100644
--- a/mempool/src/mempool.c
+++ b/mempool/src/mempool.c
@@ -65,15 +65,14 @@ void mempool_del_(mempool* pool) {
65 } 65 }
66} 66}
67 67
68// TODO: Add a unit test for clearing a pool that has not been initialized.
69void mempool_clear_(mempool* pool) { 68void mempool_clear_(mempool* pool) {
70 assert(pool); 69 assert(pool);
71 pool->head = 0;
72 pool->used = 0;
73 pool->num_used_blocks = 0;
74 memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes);
75 memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo));
76 if (pool->num_blocks > 0) { 70 if (pool->num_blocks > 0) {
71 pool->head = 0;
72 pool->used = 0;
73 pool->num_used_blocks = 0;
74 memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes);
75 memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo));
77 init_free_list(pool); 76 init_free_list(pool);
78 } 77 }
79} 78}
diff --git a/mempool/test/mempool_test.c b/mempool/test/mempool_test.c
index 6d904bc..69658b9 100644
--- a/mempool/test/mempool_test.c
+++ b/mempool/test/mempool_test.c
@@ -25,13 +25,19 @@ TEST_CASE(mempool_create) {
25} 25}
26 26
27// Create a dynamically-backed pool. 27// Create a dynamically-backed pool.
28TEST_CASE(mem_create_dyn) { 28TEST_CASE(mempool_create_dyn) {
29 DEF_MEMPOOL_DYN(dyn_pool, int); 29 DEF_MEMPOOL_DYN(dyn_pool, int);
30 30
31 dyn_pool pool; 31 dyn_pool pool;
32 mempool_make_dyn(&pool, NUM_BLOCKS, sizeof(int)); 32 mempool_make_dyn(&pool, NUM_BLOCKS, sizeof(int));
33} 33}
34 34
35// Clear an uninitialized pool.
36TEST_CASE(mempool_clear_uninitialized) {
37 test_pool pool = {0};
38 mempool_clear(&pool);
39}
40
35// Allocate all N blocks. 41// Allocate all N blocks.
36TEST_CASE(mempool_allocate_until_full) { 42TEST_CASE(mempool_allocate_until_full) {
37 test_pool pool; 43 test_pool pool;
@@ -172,7 +178,7 @@ TEST_CASE(mempool_get_block) {
172} 178}
173 179
174// Clear and re-use an allocator. 180// Clear and re-use an allocator.
175TEST_CASE(mem_clear_then_reuse) { 181TEST_CASE(mempool_clear_then_reuse) {
176 test_pool mem; 182 test_pool mem;
177 mempool_make(&mem); 183 mempool_make(&mem);
178 184