diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-07-05 21:00:55 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-07-05 21:00:55 -0700 |
commit | 71758d6cd1093981c410b19b57fb11c0d2b2ff8a (patch) | |
tree | 9bd175f1a4d06dc65162ee2c03eb9b4429ac3c76 /tests | |
parent | 3451e42d24f8ba117deeb3e44d6db6aefc78412a (diff) | |
download | txr-71758d6cd1093981c410b19b57fb11c0d2b2ff8a.tar.gz txr-71758d6cd1093981c410b19b57fb11c0d2b2ff8a.tar.bz2 txr-71758d6cd1093981c410b19b57fb11c0d2b2ff8a.zip |
structs: bugfix in static-slot-ensure.
* struct.c (static_sot_ens_rec): This change is in the case
when a static slot is being ensured in a struct type which
already has that static slot by inheritance. In that
situation, the inheritance is severed and the struct gets its
own non-inherited slot of that name. Then all of the derived
structs are scanned. If any contain the original inherited
slot, it is updated to the new, non-inherited one. The bug
here is that we were copying the home_offs field of the
original inherited slot to the new one! This is wrong; the new
slot is not related to the original inherited one. The new
slot is a home slot and its own offset must be home_offs.
We can calculate that simply as its delta from the static slot
table base.
Diffstat (limited to 'tests')
0 files changed, 0 insertions, 0 deletions