summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/ChangeLog5
-rw-r--r--libguile/gc.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 9077d137e..262a3ab2c 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,5 +1,10 @@
2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
+ * gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not
+ '=='. also, return after calling `scm_gc_mark'.
+
+2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
+
* gc.c: (scm_gc_mark_dependencies): new function. like
`scm_gc_mark', but doesn't mark the argument itself. defined
using an arrangement similar to that in eval.c: `scm_gc_mark' and
diff --git a/libguile/gc.c b/libguile/gc.c
index ebafc9f87..b1095d135 100644
--- a/libguile/gc.c
+++ b/libguile/gc.c
@@ -1125,10 +1125,11 @@ gc_mark_loop:
gc_mark_nimp:
#ifdef MARK_DEPENDENCIES
- if (ptr == p)
+ if (SCM_EQ_P (ptr, p))
return;
scm_gc_mark (ptr);
+ return;
gc_mark_loop_first_time:
#endif
@@ -1381,13 +1382,13 @@ gc_mark_loop_first_time:
def:
SCM_MISC_ERROR ("unknown type", SCM_EOL);
}
+#undef RECURSE
}
#undef FUNC_NAME
#ifndef MARK_DEPENDENCIES
#undef MARK
-#undef RECURSE
#undef FNAME
/* And here we define `scm_gc_mark_dependencies', by including this
@@ -1399,7 +1400,6 @@ gc_mark_loop_first_time:
#include "gc.c"
#undef MARK_DEPENDENCIES
#undef MARK
-#undef RECURSE
#undef FNAME