fix: added the self pattern to the arena
This commit is contained in:
@@ -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).
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user