# HG changeset patch # User Michael Pavone # Date 1463338976 25200 # Node ID c7c573f0229e31ebe3c88bc1d329f842a3e23152 # Parent 4263dc9cf86dcd94c8c44ccb9d72f6953a1d9474 Fixed a really egregious bug in the arena implementation. Not sure how this even worked at all before. diff -r 4263dc9cf86d -r c7c573f0229e arena.c --- a/arena.c Wed May 11 22:43:18 2016 -0700 +++ b/arena.c Sun May 15 12:02:56 2016 -0700 @@ -17,6 +17,8 @@ size_t free_storage; }; +#define DEFAULT_STORAGE_SIZE 8 + static arena *current_arena; arena *get_current_arena() @@ -45,7 +47,11 @@ { arena *cur = get_current_arena(); if (cur->used_count == cur->used_storage) { - cur->used_storage *= 2; + if (cur->used_storage) { + cur->used_storage *= 2; + } else { + cur->used_storage = DEFAULT_STORAGE_SIZE; + } cur->used_blocks = realloc(cur->used_blocks, cur->used_storage * sizeof(void *)); } cur->used_blocks[cur->used_count++] = block;