diff options
| author | WormHeamer | 2025-12-28 23:56:25 -0500 |
|---|---|---|
| committer | WormHeamer | 2025-12-28 23:56:25 -0500 |
| commit | 74c094eeb77e7a25501603ef668333245f726662 (patch) | |
| tree | 51451a1047300baa601e3a48a036624ba59db506 | |
| parent | dd3aaf21aa1a1c63f6953449bcb6af7ecc42eb8e (diff) | |
fix arena_realloc() zeroing memory
| -rw-r--r-- | arena.h | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -5,6 +5,7 @@ #include <stddef.h> #include <stdint.h> +#include <string.h> typedef struct { char *start; /* need to release memory */ @@ -24,10 +25,10 @@ void *arena_alloc(Arena *a, size_t n, size_t align); void *arena_realloc(Arena *a, void *old, size_t oldsz, size_t newsz, size_t align); #define new(a, t)\ - arena_alloc(a, sizeof(t), _Alignof(__typeof__(t))) + memset(arena_alloc(a, sizeof(t), _Alignof(__typeof__(t))), 0, sizeof(t)) #define new_arr(a, t, n)\ - arena_alloc(a, sizeof(t) * (n), _Alignof(__typeof__(t))) + memset(arena_alloc(a, sizeof(t) * (n), _Alignof(__typeof__(t))), 0, sizeof(t) * (n)) #define resize(a, x, osz, nsz)\ arena_realloc(a, x, sizeof(*(x)) * (osz),\ @@ -67,7 +68,6 @@ void *arena_alloc(Arena *a, size_t sz, size_t align) { char *p = a->beg + (-(uintptr_t)a->beg & (align - 1)); if (p >= a->end) FAIL_WITH_MSG("arena out-of-memory"); a->beg = p + sz; - memset(p, 0, sz); return p; } |
