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);
|
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).
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user