diff -up gc-7.1/thread_local_alloc.c.dont_add_byte gc-7.1/thread_local_alloc.c --- gc-7.1/thread_local_alloc.c.dont_add_byte 2007-10-24 19:22:37.000000000 -0500 +++ gc-7.1/thread_local_alloc.c 2008-09-08 06:53:20.000000000 -0500 @@ -291,14 +291,16 @@ void GC_mark_thread_local_fls_for(GC_tlf ptr_t q; int j; - for (j = 1; j < TINY_FREELISTS; ++j) { + for (j = 0; j < TINY_FREELISTS; ++j) { q = p -> ptrfree_freelists[j]; if ((word)q > HBLKSIZE) GC_set_fl_marks(q); q = p -> normal_freelists[j]; if ((word)q > HBLKSIZE) GC_set_fl_marks(q); # ifdef GC_GCJ_SUPPORT - q = p -> gcj_freelists[j]; - if ((word)q > HBLKSIZE) GC_set_fl_marks(q); + if (j > 0) { + q = p -> gcj_freelists[j]; + if ((word)q > HBLKSIZE) GC_set_fl_marks(q); + } # endif /* GC_GCJ_SUPPORT */ } }