fix bug in arena
authorcassowarii <2374677+cassowarii@users.noreply.github.com>
Fri, 19 Jun 2026 06:18:04 +0000 (23:18 -0700)
committercassowarii <2374677+cassowarii@users.noreply.github.com>
Fri, 19 Jun 2026 06:18:04 +0000 (23:18 -0700)
src/mem/arena.c
src/parse/scanner.c

index 0d56062..176fc12 100644 (file)
@@ -22,7 +22,7 @@ hArena sbArena_create(usize initial_size) {
 
     while (initial_size % ALIGN != 0) initial_size++;
 
-    struct block *block = malloc(initial_size);
+    struct block *block = calloc(sizeof(struct block) + initial_size, 1);
     block->used = 0;
     block->next = NULL;
     block->capacity = initial_size;
@@ -50,7 +50,7 @@ void *sbArena_alloc(hArena arena, usize size) {
             /* need to allocate a new block */
             usize new_capacity = arena->current->capacity;
             if (size > new_capacity) new_capacity = size;
-            struct block *block = malloc(sizeof(struct block) + new_capacity);
+            struct block *block = calloc(sizeof(struct block) + new_capacity, 1);
             block->capacity = new_capacity;
             block->next = NULL;
 
index a84651a..5220444 100644 (file)
@@ -12,6 +12,8 @@
  * after this stage so we can differentiate between things like 'a.b (1)' and 'a.b(1)',
  * which have different semantics. */
 
+#define MEM_BLOCK_SIZE 65536
+
 typedef struct sbScanner {
     hFileReader file_reader;
     hArena arena;
@@ -20,7 +22,7 @@ typedef struct sbScanner {
 
 hScanner sbScanner_create(hFileReader fr) {
     hScanner sc = malloc(sizeof(sbScanner));
-    sc->arena = sbArena_create(65536);
+    sc->arena = sbArena_create(MEM_BLOCK_SIZE);
     sc->file_reader = fr;
     sc->next_token = (sbLexToken) {0};