aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mem/src/mem.c1
-rw-r--r--mem/test/mem_test.c2
-rw-r--r--mempool/src/mempool.c5
-rw-r--r--mempool/test/mempool_test.c8
4 files changed, 11 insertions, 5 deletions
diff --git a/mem/src/mem.c b/mem/src/mem.c
index c2af518..9169a9f 100644
--- a/mem/src/mem.c
+++ b/mem/src/mem.c
@@ -57,6 +57,7 @@ void mem_del_(Memory* mem) {
57 57
58void mem_clear_(Memory* mem) { 58void mem_clear_(Memory* mem) {
59 assert(mem); 59 assert(mem);
60 mem->num_used_blocks = 0;
60 mem->next_free_chunk = 0; 61 mem->next_free_chunk = 0;
61 memset(mem->blocks, 0, mem->num_blocks * mem->block_size_bytes); 62 memset(mem->blocks, 0, mem->num_blocks * mem->block_size_bytes);
62 memset(mem->chunks, 0, mem->num_blocks * sizeof(Chunk)); 63 memset(mem->chunks, 0, mem->num_blocks * sizeof(Chunk));
diff --git a/mem/test/mem_test.c b/mem/test/mem_test.c
index 14718a5..88c8b14 100644
--- a/mem/test/mem_test.c
+++ b/mem/test/mem_test.c
@@ -220,6 +220,8 @@ TEST_CASE(mem_clear_then_reuse) {
220 } 220 }
221 221
222 mem_clear(&mem); 222 mem_clear(&mem);
223 TEST_EQUAL(mem_size(&mem), 0);
224 TEST_EQUAL(mem_capacity(&mem), NUM_BLOCKS);
223 225
224 // Allocate chunks and assign values 0..N. 226 // Allocate chunks and assign values 0..N.
225 for (int i = 0; i < NUM_BLOCKS; ++i) { 227 for (int i = 0; i < NUM_BLOCKS; ++i) {
diff --git a/mempool/src/mempool.c b/mempool/src/mempool.c
index 444d602..c398c4f 100644
--- a/mempool/src/mempool.c
+++ b/mempool/src/mempool.c
@@ -66,8 +66,9 @@ void mempool_del_(mempool* pool) {
66 66
67void mempool_clear_(mempool* pool) { 67void mempool_clear_(mempool* pool) {
68 assert(pool); 68 assert(pool);
69 pool->head = 0; 69 pool->head = 0;
70 pool->used = 0; 70 pool->used = 0;
71 pool->num_used_blocks = 0;
71 memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes); 72 memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes);
72 memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo)); 73 memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo));
73 init_free_list(pool); 74 init_free_list(pool);
diff --git a/mempool/test/mempool_test.c b/mempool/test/mempool_test.c
index 843f7e7..4c55e4b 100644
--- a/mempool/test/mempool_test.c
+++ b/mempool/test/mempool_test.c
@@ -178,16 +178,18 @@ TEST_CASE(mem_clear_then_reuse) {
178 178
179 // Allocate chunks, contents not important. 179 // Allocate chunks, contents not important.
180 for (int i = 0; i < NUM_BLOCKS; ++i) { 180 for (int i = 0; i < NUM_BLOCKS; ++i) {
181 int* chunk = mempool_alloc(&mem); 181 const int* chunk = mempool_alloc(&mem);
182 TEST_TRUE(chunk != 0); 182 TEST_TRUE(chunk != nullptr);
183 } 183 }
184 184
185 mempool_clear(&mem); 185 mempool_clear(&mem);
186 TEST_EQUAL(mempool_size(&mem), 0);
187 TEST_EQUAL(mempool_capacity(&mem), NUM_BLOCKS);
186 188
187 // Allocate chunks and assign values 0..N. 189 // Allocate chunks and assign values 0..N.
188 for (int i = 0; i < NUM_BLOCKS; ++i) { 190 for (int i = 0; i < NUM_BLOCKS; ++i) {
189 int* chunk = mempool_alloc(&mem); 191 int* chunk = mempool_alloc(&mem);
190 TEST_TRUE(chunk != 0); 192 TEST_TRUE(chunk != nullptr);
191 *chunk = i + 1; 193 *chunk = i + 1;
192 } 194 }
193 195