From: Matthew Flatt Date: Tue, 4 Oct 2005 21:02:37 +0000 (+0000) Subject: 299.403 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b55220a075fa9b784e4fa6201754cf959b2a7f03;p=gc 299.403 svn: r979 --- diff --git a/finalize.c b/finalize.c index e41e341c..686f4992 100644 --- a/finalize.c +++ b/finalize.c @@ -667,6 +667,13 @@ void GC_finalize() /* PLTSCHEME: for resetting the disapearing link */ struct disappearing_link *done_dl = NULL, *last_done_dl = NULL; + /* PLTSCHEME: it's important to "push roots again" before + making disappearing links disappear, because this + step includes marking from ephemerons whose keys are + reachable. We want to mark before disappearing links + are disappeared. */ + if (GC_push_last_roots_again) GC_push_last_roots_again(); + /* Make disappearing links disappear */ /* PLTSCHEME: handle NULL real_link and remember old values */ for (i = 0; i < dl_size; i++) {