diff options
-rw-r--r-- | libguile/ChangeLog | 5 | ||||
-rw-r--r-- | libguile/gc.c | 6 |
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 |