From cfdd25cdd8efabaa43446036e0ff0c326c001f8f Mon Sep 17 00:00:00 2001 From: "@syxhe" Date: Tue, 25 Mar 2025 18:13:14 -0500 Subject: Change function signature of (simple)arena_init function --- src/arena.c | 73 +++++++++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 36 deletions(-) (limited to 'src/arena.c') diff --git a/src/arena.c b/src/arena.c index 870edca..36a9ce7 100644 --- a/src/arena.c +++ b/src/arena.c @@ -26,53 +26,52 @@ typedef struct arena { size_t node_memspace; } arena; -int arenanode_init(arenanode **an, size_t bytes) { - (*an) = VALLOC(1, sizeof(**an)); - if(!(*an)) - return -1; - - (*an)->allocated = bytes; - (*an)->used = 0; - (*an)->next = NULL; +arenanode * arenanode_init(size_t bytes) { + arenanode *an = VALLOC(1, sizeof(*an)); + if(!an) + return NULL; + + an->allocated = bytes; + an->used = 0; + an->next = NULL; void *mem = VALLOC(bytes, 1); if(!mem) { - free((*an)); - (*an) = NULL; - return -1; + free(an); + return NULL; } - (*an)->membase = mem; - (*an)->memcur = mem; + an->membase = mem; + an->memcur = mem; - return 0; + return an; } -int arena_init(arena **a, size_t bytes) { +arena * arena_init(size_t bytes) { if(!ISPOWOF2(MEM_ALIGN_BYTES)) XALLOC_EXIT(" \"MEM_ALIGN_BYTES\" is not a power of 2. Refusing to create a new arena"); - (*a) = VALLOC(1, sizeof(**a)); - if(!(*a)) - return -1; - (*a)->start = NULL; - (*a)->current = NULL; - (*a)->node_memspace = bytes; - - arenanode *base; - if(arenanode_init(&base, bytes) < 0) { - free(*a); - (*a) = NULL; - return -1; + arena *a = VALLOC(1, sizeof(arena)); + if(!a) + return NULL; + + a->start = NULL; + a->current = NULL; + a->node_memspace = bytes; + + arenanode *base = arenanode_init(bytes); + if(!base) { + free(a); + return NULL; } - (*a)->start = base; - (*a)->current = base; + a->start = base; + a->current = base; - return 0; + return a; } -void* arena_alloc(arena * const arena, size_t bytes) { +void * arena_alloc(arena * const arena, size_t bytes) { if(!ISPOWOF2(MEM_ALIGN_BYTES)) XALLOC_EXIT(" \"MEM_ALIGN_BYTES\" is not a power of 2. Refusing to allocate any memory"); if(!arena) @@ -81,8 +80,8 @@ void* arena_alloc(arena * const arena, size_t bytes) { RETURNWERR(ENOMEM, NULL); if(bytes > ((arena->current)->allocated - (arena->current)->used)) { - arenanode *new; - if(arenanode_init(&new, arena->node_memspace) < 0) + arenanode *new = arenanode_init(arena->node_memspace); + if(!new) return NULL; arena->current->next = new; @@ -135,7 +134,9 @@ int arena_clear(arena **arena) { int ret = 0; if((ret = arena_free(arena)) < 0) return ret; - return arena_init(arena, bytes); + (*arena) = arena_init(bytes); + + return (!(*arena)) ? -1 : 0; } @@ -144,8 +145,8 @@ int arena_clear(arena **arena) { typedef arena simplearena; -int simplearena_init(simplearena **a, size_t bytes) { - return arena_init(a, bytes); +simplearena * simplearena_init(size_t bytes) { + return arena_init(bytes); } void* simplearena_alloc(simplearena * const a, size_t bytes) { -- cgit v1.2.3