fix: added the self pattern to the arena

This commit is contained in:
2026-01-12 20:23:26 +02:00
parent b7081541eb
commit 21a5e3e068
2 changed files with 4 additions and 3 deletions

View File

@@ -34,7 +34,7 @@ typedef struct _NIArena {
const char *niarena_get_error(void); const char *niarena_get_error(void);
NIArena *niarena_new(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); void niarena_delete(NIArena *arena);
#ifdef NIARENA_IMPLEMENTATION #ifdef NIARENA_IMPLEMENTATION
@@ -72,8 +72,9 @@ niarena_new(void)
} }
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) { if((arena->capacity - arena->offset) < size) {
// The allocation is invalid, but the contents of the arena // The allocation is invalid, but the contents of the arena
// can still be used (previous allocations). // can still be used (previous allocations).

View File

@@ -26,7 +26,7 @@ test_arena_allocations()
int *ns[N_INTS_TEST]; int *ns[N_INTS_TEST];
for(int i = 1; i <= N_INTS_TEST + 1; i++) { 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) { if(i == N_INTS_TEST + 1) {
// Invalid allocation does not invalidate the rest // Invalid allocation does not invalidate the rest
assert(p == NULL); assert(p == NULL);