diff options
| author | 3gg <3gg@shellblade.net> | 2025-06-30 19:29:07 -0700 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2025-06-30 19:29:07 -0700 |
| commit | 1fc8bb7142868bbeac5bcbbd489cd23347716203 (patch) | |
| tree | 491b77b91dc4fa30d199cd56ec54c58e1d716e71 /mem | |
| parent | b48f99a40b1a58c02ccbcb75bc18a158294c356f (diff) | |
Fix: set num used blocks to 0 on clear
Diffstat (limited to 'mem')
| -rw-r--r-- | mem/src/mem.c | 1 | ||||
| -rw-r--r-- | mem/test/mem_test.c | 2 |
2 files changed, 3 insertions, 0 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 | ||
| 58 | void mem_clear_(Memory* mem) { | 58 | void 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) { |
