diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-10-07 20:36:21 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-10-07 20:36:21 -0700 |
commit | b79eddb5ef66c17688572d20e44a60e49930b511 (patch) | |
tree | 9f46e0eb81d232c91cd9e6ab6c16b10711dc7672 | |
parent | 60dc066432b343d059eadd4b19a4ca9f795f0389 (diff) | |
download | txr-b79eddb5ef66c17688572d20e44a60e49930b511.tar.gz txr-b79eddb5ef66c17688572d20e44a60e49930b511.tar.bz2 txr-b79eddb5ef66c17688572d20e44a60e49930b511.zip |
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.
-rw-r--r-- | struct.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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 { |