diff --git a/src/racket/gc2/immobile_boxes.c b/src/racket/gc2/immobile_boxes.c index b67d27492f..cc903c4fed 100644 --- a/src/racket/gc2/immobile_boxes.c +++ b/src/racket/gc2/immobile_boxes.c @@ -17,8 +17,10 @@ void **GC_malloc_immobile_box(void *p) void GC_free_immobile_box(void **b) { GCTYPE *gc = GC_get_GC(); - GC_Immobile_Box *ib; + GC_Immobile_Box *ib = (GC_Immobile_Box *)b; +#if 0 + /* For debugging: */ for(ib = gc->immobile_boxes; ib; ib = ib->next) if(PPTR(ib) == b) { if(ib->prev) ib->prev->next = ib->next; @@ -28,6 +30,12 @@ void GC_free_immobile_box(void **b) return; } GCWARN((GCOUTF, "Attempted free of non-existent immobile box %p\n", b)); +#else + if(ib->prev) ib->prev->next = ib->next; + if(!ib->prev) gc->immobile_boxes = ib->next; + if(ib->next) ib->next->prev = ib->prev; + free(ib); +#endif } #define traverse_immobiles(gcMUCK, set_bt_src) { \