From ed9af7616e76f0a5111d3e5a56eb9d1d3025c1a6 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 7 Oct 2016 20:36:21 -0700 Subject: bug: heap backpointer assignment in static-slot-ensure. * struct.c (static_slot_ens_rec): Neglected use of set macro to store newval in freshly allocated slot, which means we corrupt garbage collection if this causes an old generation objet to point to a new generation object. --- struct.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'struct.c') diff --git a/struct.c b/struct.c index 29ee89d6..066b6f44 100644 --- a/struct.c +++ b/struct.c @@ -987,10 +987,10 @@ static val static_slot_ens_rec(val stype, val sym, val newval, stsl = &st->stslot[st->nstslots]; if (inh_stsl == 0) { - stsl->store = newval; stsl->home_type = stype; stsl->home_offs = st->nstslots; stsl->home = &stsl->store; + set(stslot_loc(stsl), newval); if (!opt_compat || opt_compat > 151) inh_stsl = stsl; } else { -- cgit v1.2.3