diff options
| -rw-r--r-- | arena.h | 12 | 
1 files changed, 5 insertions, 7 deletions
| @@ -11,7 +11,7 @@   * Created: 2024-11-01   * Author: Aryadev Chavali - * Description: Arena allocator + * Description: Arena allocator.   */  #ifndef ARENA_H @@ -160,12 +160,9 @@ uint8_t *region_alloc_rec(region_t *region, uint32_t capacity)  void region_delete_rec(region_t *region)  { -  while (region) -  { -    region_t *next = region->next; -    free(region); -    region = next; -  } +  for (region_t *next = NULL; region; +       next = region->next, free(region), region = next) +    continue;  }  uint8_t *arena_alloc(arena_t *arena, uint32_t size) @@ -175,6 +172,7 @@ uint8_t *arena_alloc(arena_t *arena, uint32_t size)      arena->beg = region_make(size, NULL);      arena->end = arena->beg;    } +    uint8_t *start = region_alloc_rec(arena->beg, size);    // if we've attached a new region, end needs to be at that region    if (arena->end->next) | 
