From a40115dc348fcd89ee855a51993b8f01833c1e05 Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Fri, 26 May 2017 10:18:32 -0400 Subject: [PATCH] Fix accidental fallthrough in scan_weak_pointers() A weak pointer to an immobile space object in the collected generation but which survived GC would fail the test for breakability, reaching the call to lose() even though things were perfectly fine. --- src/runtime/gc-common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runtime/gc-common.c b/src/runtime/gc-common.c index 6ff45ce9e..12d815baf 100644 --- a/src/runtime/gc-common.c +++ b/src/runtime/gc-common.c @@ -871,8 +871,8 @@ void scan_weak_pointers(void) LOW_WORD(forwarding_pointer_value(objaddr)) : UNBOUND_MARKER_WIDETAG; } #ifdef LISP_FEATURE_IMMOBILE_SPACE - else if (immobile_space_p(pointee) && - immobile_obj_gen_bits(objaddr) == from_space) { + else if (immobile_space_p(pointee)) { + if (immobile_obj_gen_bits(objaddr) == from_space) wp->value = UNBOUND_MARKER_WIDETAG; } #endif -- 2.11.4.GIT