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);
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).

View File

@@ -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);