diff options
author | Omniscient <omniscient.oce@gmail.com> | 2024-06-07 12:10:32 +1000 |
---|---|---|
committer | Omniscient <omniscient.oce@gmail.com> | 2024-06-07 12:10:32 +1000 |
commit | f553d66891e6f77b0fa78c279f51a44d1c51ff9f (patch) | |
tree | 4e0019b694e86ebde52bf88a883b0d3666fbcdc5 /src/std/mem.c | |
parent | 34cfaac69eda7eae258d004e4cafd5a816cf9b67 (diff) |
add assert back that pool entry is at least as big as a pointer. add debug name for pools
Diffstat (limited to 'src/std/mem.c')
-rw-r--r-- | src/std/mem.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/std/mem.c b/src/std/mem.c index a5321fb..a5a0b88 100644 --- a/src/std/mem.c +++ b/src/std/mem.c @@ -46,15 +46,18 @@ void arena_rewind(arena_save savepoint) { savepoint.arena->curr = savepoint.save // --- Pool -void_pool void_pool_create(arena* a, u64 capacity, u64 entry_size) { +void_pool void_pool_create(arena* a, const char* debug_label, u64 capacity, u64 entry_size) { size_t memory_requirements = capacity * entry_size; void* backing_buf = arena_alloc(a, memory_requirements); + assert(entry_size >= sizeof(void_pool_header)); // TODO: create my own assert with error message + void_pool pool = { .capacity = capacity, .entry_size = entry_size, .count = 0, .backing_buffer = backing_buf, - .free_list_head = NULL }; + .free_list_head = NULL, + .debug_label = debug_label }; void_pool_free_all(&pool); @@ -99,7 +102,7 @@ void* void_pool_alloc(void_pool* pool, u32* out_raw_handle) { uintptr_t start = (uintptr_t)pool->backing_buffer; uintptr_t cur = (uintptr_t)free_node; TRACE("%ld %ld ", start, cur); - /* assert(cur > start); */ + assert(cur > start); u32 index = (u32)((cur - start) / pool->entry_size); printf("Index %d\n", index); if (out_raw_handle != NULL) { |