diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 9077d137e..262a3ab2c 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,8 @@ +2000-12-24 Michael Livshin + + * 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 * gc.c: (scm_gc_mark_dependencies): new function. like 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