summaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index b136143a..3460fb27 100644
--- a/gc.c
+++ b/gc.c
@@ -665,13 +665,12 @@ static int_ptr_t sweep(void)
for (ppf = &free_list; *ppf != nil; ) {
val block = *ppf;
if (block >= heap->block && block < end) {
- *ppf = block->t.next;
+ if ((*ppf = block->t.next) == 0)
+ free_tail = ppf;
} else {
ppf = &block->t.next;
}
}
- if (free_list == 0)
- free_tail = &free_list;
*pph = heap->next;
free(heap);
#if HAVE_VALGRIND