From 21a5e3e06846407609b885f208d927123e88ba0a Mon Sep 17 00:00:00 2001 From: David Date: Mon, 12 Jan 2026 20:23:26 +0200 Subject: [PATCH] fix: added the self pattern to the arena --- niarena.h | 5 +++-- test/niarena_test.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/niarena.h b/niarena.h index 376cc1b..dbac901 100644 --- a/niarena.h +++ b/niarena.h @@ -34,7 +34,7 @@ typedef struct _NIArena { const char *niarena_get_error(void); NIArena *niarena_new(void); -void *niarena_alloc(NIArena *arena, size_t size); +void *niarena_alloc(NIArena **self, size_t size); void niarena_delete(NIArena *arena); #ifdef NIARENA_IMPLEMENTATION @@ -72,8 +72,9 @@ niarena_new(void) } void * -niarena_alloc(NIArena *arena, size_t size) +niarena_alloc(NIArena **self, size_t size) { + NIArena *arena = *self; if((arena->capacity - arena->offset) < size) { // The allocation is invalid, but the contents of the arena // can still be used (previous allocations). diff --git a/test/niarena_test.c b/test/niarena_test.c index 388ba7a..7444533 100644 --- a/test/niarena_test.c +++ b/test/niarena_test.c @@ -26,7 +26,7 @@ test_arena_allocations() int *ns[N_INTS_TEST]; for(int i = 1; i <= N_INTS_TEST + 1; i++) { - int *p = (int *)niarena_alloc(arena, sizeof(int)); + int *p = (int *)niarena_alloc(&arena, sizeof(int)); if(i == N_INTS_TEST + 1) { // Invalid allocation does not invalidate the rest assert(p == NULL);