>Sorry, I suspect it might have to return Qtrue also when
>freelist is non-null already, if the above description is
>correct.
>
>
>Index: gc.c
>===================================================================
>RCS file: /src/ruby/gc.c,v
>retrieving revision 1.214
>diff -u -w -b -p -r1.214 gc.c
>--- gc.c	18 Oct 2005 17:35:18 -0000	1.214
>+++ gc.c	25 Oct 2005 04:17:13 -0000
>@@ -1280,10 +1280,9 @@ garbage_collect(void)
>     if (dont_gc || during_gc) {
> 	if (!freelist) {
> 	    add_heap();
> 	}
>-	return Qfalse;
>+	return Qtrue;
>     }
>-    if (during_gc) return Qfalse;
>     during_gc++;
> 
>     init_mark_stack();
>
>
>-- 

Sorry, I have fixed.