jrk

my own c stdlib to keep myself sane
git clone git://git.jakekoroman.com/jrk
Log | Files | Refs

commit 0a62235e16263adfe0be3a90c578a50e3277ed9b
parent 0845e6f115d1314d21e7176c79570bcd25707d73
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Tue,  2 Sep 2025 15:54:34 -0400

remove jrk_arena_expand.

Wasn't properly implemented. When reallocing all pointers are
invalidated. To properly implement growing I will need to either have
a way of updating all pointers or treating the arena as a linked
list. Pointers could also be indexes into the arena data array but then we
lose pointer syntax.

Not sure the best way to implement this. I don't have a use for
growing arenas at the moment so this is a low priority.

Diffstat:
Mjrk.h | 17++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/jrk.h b/jrk.h @@ -54,7 +54,6 @@ void *jrk_erealloc(void*, u64); jrk_Arena jrk_arena_create(u64); void *jrk__arena_push(jrk_Arena*, u64); -void jrk_arena_expand(jrk_Arena*, u64); i32 jrk_rand_num(i32); i32 jrk_rand_num_range(i32, i32); @@ -201,7 +200,6 @@ char *jrk_tmpstrings_pushf(char *, ...); #define arena_destroy jrk_arena_destroy #define arena_push_struct jrk_arena_push_struct #define arena_push_array jrk_arena_push_array - #define arena_expand jrk_arena_expand #define rand_num jrk_rand_num #define rand_num_range jrk_rand_num_range @@ -309,23 +307,16 @@ jrk_arena_create(u64 n) void * jrk__arena_push(jrk_Arena *arena, u64 n) { - while (arena->count + n >= arena->capacity) - jrk_arena_expand(arena, arena->capacity * 2); + jrk_assertv(arena->count + n <= arena->capacity, + "jrk__arena_push(%p, %ld): arena push requires %ld bytes but has a capacity of %ld bytes", + arena, n, arena->count + n, arena->capacity + ); void *result = &arena->data[arena->count]; arena->count += n; return result; } -void -jrk_arena_expand(jrk_Arena *arena, u64 new_capacity) -{ - u8 *tmp = jrk_erealloc(arena->data, new_capacity); - - arena->capacity = new_capacity; - arena->data = tmp; -} - i32 jrk_sb_appendf(jrk_StringBuilder *sb, const char *fmt, ...) {