From e9a267e6a1268f8f7eafdcca8b609c443d717e67 Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Fri, 7 Jul 2023 11:07:43 +0200 Subject: [PATCH 1/2] Skip weak locatives that were already invalidated This avoids a NULL pointer dereference --- runtime.c | 1 + 1 file changed, 1 insertion(+) diff --git a/runtime.c b/runtime.c index edda5377..fbce94fd 100644 --- a/runtime.c +++ b/runtime.c @@ -4126,6 +4126,7 @@ static C_regparm void C_fcall update_locatives(int mode) (mode == GC_REALLOC && !C_in_stackp(loc) && !C_in_heapp(loc))); /* NB: *old* heap! */ ptr = C_block_item(loc, 0); /* fix up ptr */ + if (ptr == 0) continue; /* Skip already dropped weak locatives */ offset = C_unfix(C_block_item(loc, 1)); obj = ptr - offset; -- 2.40.1