Translate region_delete_rec while loop to for loop, minor edits

This commit is contained in:
2025-04-09 22:51:39 +01:00
parent 1dd0f8835c
commit 4218fa3a2c

12
arena.h
View File

@@ -11,7 +11,7 @@
* Created: 2024-11-01 * Created: 2024-11-01
* Author: Aryadev Chavali * Author: Aryadev Chavali
* Description: Arena allocator * Description: Arena allocator.
*/ */
#ifndef ARENA_H #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) void region_delete_rec(region_t *region)
{ {
while (region) for (region_t *next = NULL; region;
{ next = region->next, free(region), region = next)
region_t *next = region->next; continue;
free(region);
region = next;
}
} }
uint8_t *arena_alloc(arena_t *arena, uint32_t size) 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->beg = region_make(size, NULL);
arena->end = arena->beg; arena->end = arena->beg;
} }
uint8_t *start = region_alloc_rec(arena->beg, size); uint8_t *start = region_alloc_rec(arena->beg, size);
// if we've attached a new region, end needs to be at that region // if we've attached a new region, end needs to be at that region
if (arena->end->next) if (arena->end->next)