~ chicken-core (chicken-5) f2adf1088311b0a020b8c61535c1605175aa8668
commit f2adf1088311b0a020b8c61535c1605175aa8668 Author: Peter Bex <peter@more-magic.net> AuthorDate: Fri Jul 7 11:07:43 2023 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Jul 7 13:16:37 2023 +0200 Skip weak locatives that were already invalidated This avoids a NULL pointer dereference Signed-off-by: felix <felix@call-with-current-continuation.org> 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;Trap