diff --git a/include/arena.h b/include/arena.h index f5618d8..397da80 100644 --- a/include/arena.h +++ b/include/arena.h @@ -36,7 +36,7 @@ typedef struct { }; } ArenaResult; -ArenaResult arena_init(void *buffer, size_t size); +ArenaResult arena_init(size_t size); void arena_destroy(Arena *arena); ArenaPointer arena_alloc(Arena *arena, size_t size, size_t alignment); diff --git a/src/arena.c b/src/arena.c index 063e97d..ab7a690 100644 --- a/src/arena.c +++ b/src/arena.c @@ -2,11 +2,13 @@ #include #include -ArenaResult arena_init(void *buffer, size_t size) { +ArenaResult arena_init(size_t size) { + + void *buffer = malloc(size); if (buffer == NULL) { ArenaResult err = { .is_valid = false, - .err = ARENA_NULL_ARG, + .err = ARENA_BAD_ALLOC, }; return err; } @@ -24,7 +26,6 @@ ArenaResult arena_init(void *buffer, size_t size) { .size = size, .offset = 0, }; - ArenaResult val = { .is_valid = true, .arena = new_arena, @@ -32,3 +33,13 @@ ArenaResult arena_init(void *buffer, size_t size) { return val; } + +void arena_destroy(Arena *arena) { + if (arena == NULL) { + return; + } + + arena->offset = 0; + arena->size = 0; + free(arena->data); +}