diff --git a/src/mem/arena/mem_arena.c b/src/mem/arena/mem_arena.c index fadea7d..ee9fb3a 100644 --- a/src/mem/arena/mem_arena.c +++ b/src/mem/arena/mem_arena.c @@ -21,7 +21,8 @@ struct arena { // PUBLIC API -bool wapp_mem_arena_init(Arena **arena, u64 base_capacity) { +bool wapp_mem_arena_init(Arena **arena, u64 base_capacity, MemAllocFlags flags, + bool zero_buffer) { if (!arena || *arena || base_capacity == 0) { return false; } @@ -36,7 +37,10 @@ bool wapp_mem_arena_init(Arena **arena, u64 base_capacity) { ? base_capacity : ARENA_MINIMUM_CAPACITY; - arena_ptr->buf = (u8 *)calloc(arena_capacity, sizeof(u8)); + arena_ptr->buf = (u8 *)wapp_mem_util_alloc( + arena_capacity, WAPP_MEM_ACCESS_READ_WRITE, flags, + zero_buffer ? WAPP_MEM_INIT_INITIALISED : WAPP_MEM_INIT_UNINITIALISED); + if (!(arena_ptr->buf)) { wapp_mem_arena_destroy(arena); return false; @@ -87,7 +91,7 @@ void wapp_mem_arena_destroy(Arena **arena) { Arena *arena_ptr = *arena; if (arena_ptr->buf) { - free(arena_ptr->buf); + wapp_mem_util_free(arena_ptr->buf, arena_ptr->capacity); } arena_ptr->buf = arena_ptr->offset = NULL; diff --git a/src/mem/arena/mem_arena.h b/src/mem/arena/mem_arena.h index febf915..2ace103 100644 --- a/src/mem/arena/mem_arena.h +++ b/src/mem/arena/mem_arena.h @@ -2,6 +2,7 @@ #define MEM_ARENA_H #include "aliases.h" +#include "mem_utils.h" #include #ifdef __cplusplus @@ -10,7 +11,8 @@ extern "C" { typedef struct arena Arena; -bool wapp_mem_arena_init(Arena **arena, u64 base_capacity); +bool wapp_mem_arena_init(Arena **arena, u64 base_capacity, MemAllocFlags flags, + bool zero_buffer); void *wapp_mem_arena_alloc(Arena *arena, u64 size); void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment); void wapp_mem_arena_clear(Arena *arena);