aboutsummaryrefslogtreecommitdiffhomepage
path: root/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'mem.c')
-rw-r--r--mem.c13
1 files changed, 7 insertions, 6 deletions
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;
}
}
}