summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Koroman <jake@jakekoroman.com>2025-10-30 09:50:26 -0400
committerJake Koroman <jake@jakekoroman.com>2025-10-30 09:50:26 -0400
commite217f11c188e9f47031cf4f80d4ac54a93e92671 (patch)
treeeb61f356c9bdfbd940b66be5f2a9eef0048845bb
parentca7e0702fc08e6986ec8a8e5742bd35efee38ef6 (diff)
jrk.h: update prev_offset in arena_resize, and always init the memory.
-rw-r--r--jrk.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/jrk.h b/jrk.h
index e65c1cc..bf3c970 100644
--- a/jrk.h
+++ b/jrk.h
@@ -494,14 +494,16 @@ jrk_arena_resize(jrk_Arena *arena, void *old, u64 old_size, u64 new_size)
if (old == &arena->data[arena->prev_offset]) {
result = old;
+ arena->prev_offset = arena->offset;
arena->offset = new_size;
+ memset(&arena->data[arena->prev_offset], 0, new_size - old_size);
} else {
result = &arena->data[arena->offset];
arena->prev_offset = arena->offset;
arena->offset += new_size;
if (arena->offset > arena->capacity) {
jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): arena resize requires %ld bytes but has a capacity of %ld bytes",
- (void *) arena, old, old_size, new_size, arena->offset, arena->capacity);
+ (void *) arena, old, old_size, new_size, arena->offset, arena->capacity);
return NULL;
}
memmove(result, old, old_size);