From a95e385217841da91c3e44674dbaa95fb613a153 Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 14 Sep 2025 11:03:27 +0200 Subject: change freearena for correctness --- mem.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'mem.c') diff --git a/mem.c b/mem.c index b673986..8ed87eb 100644 --- a/mem.c +++ b/mem.c @@ -124,16 +124,17 @@ allocz(struct arena **par, uint siz, uint align) } void -freearena(struct arena *ar) +freearena(struct arena **par) { struct arena *prev; - for (; ar; ar = prev) { - prev = ar->prev; - if (ar->dyn) - free(ar); + for (; *par; *par = prev) { + prev = (*par)->prev; + if ((*par)->dyn) + free(*par); else { assert(!prev); - ar->n = 0; + (*par)->n = 0; + return; } } } -- cgit v1.2.3