* guardians.c (mark_dependencies_in_tconc): new function.
authorMichael Livshin <mlivshin@bigfoot.com>
Thu, 28 Dec 2000 14:26:12 +0000 (14:26 +0000)
committerMichael Livshin <mlivshin@bigfoot.com>
Thu, 28 Dec 2000 14:26:12 +0000 (14:26 +0000)
(mark_dependencies): bug fix.  mark the dependencies of the known
zombies, too.  duh.

libguile/ChangeLog
libguile/guardians.c

index 262a3ab..fcc3b94 100644 (file)
@@ -1,3 +1,9 @@
+2000-12-28  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guardians.c (mark_dependencies_in_tconc): new function.
+       (mark_dependencies): bug fix.  mark the dependencies of the known
+       zombies, too.  duh.
+
 2000-12-24  Michael Livshin  <mlivshin@bigfoot.com>
 
        * gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not
index 5a53a62..130b3e1 100644 (file)
@@ -320,15 +320,15 @@ guardian_gc_init (void *dummy1, void *dummy2, void *dummy3)
 }
 
 static void
-mark_dependencies (guardian_t *g)
+mark_dependencies_in_tconc (tconc_t *tc)
 {
   SCM pair, next_pair;
   SCM *prev_ptr;
 
-  /* scan the live list for unmarked objects, and mark their
+  /* scan the list for unmarked objects, and mark their
      dependencies */
-  for (pair = g->live.head, prev_ptr = &g->live.head;
-       ! SCM_EQ_P (pair, g->live.tail);
+  for (pair = tc->head, prev_ptr = &tc->head;
+       ! SCM_EQ_P (pair, tc->tail);
        pair = next_pair)
     {
       SCM obj = SCM_CAR (pair);
@@ -363,6 +363,13 @@ mark_dependencies (guardian_t *g)
     }
 }
 
+static void
+mark_dependencies (guardian_t *g)
+{
+  mark_dependencies_in_tconc (&g->zombies);
+  mark_dependencies_in_tconc (&g->live);
+}
+
 static void
 mark_and_zombify (guardian_t *g)
 {