diff options
| -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; } |
