From 47c0a0416641224ad821db32404d15e39e238888 Mon Sep 17 00:00:00 2001 From: LaEntropiaa Date: Sun, 29 Mar 2026 18:00:57 -0600 Subject: [PATCH] feat and fix: Made arena_init use malloc and added arena_destroy Realized that if i want to use malloc and free i either have to make some sort of interface that lets you use a custom allocator and deallocator or just use them by default. Maybe later it would be cool to change it to that but for now is out of the scope of my project. # Tipos: # feat, fix, refactor, docs, style, test, chore --- include/arena.h | 2 +- src/arena.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) 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); +}