diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-10-21 07:14:34 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-10-21 07:14:34 -0700 |
commit | 21f800ed2d5adb542a931d50dc1f5abaaae9a2d3 (patch) | |
tree | a69b3b1c5fcca134ccec98b5ba923b123d05b02b /share | |
parent | 5b7d98ead12b4760fe764640e3ec91e358843384 (diff) | |
download | txr-21f800ed2d5adb542a931d50dc1f5abaaae9a2d3.tar.gz txr-21f800ed2d5adb542a931d50dc1f5abaaae9a2d3.tar.bz2 txr-21f800ed2d5adb542a931d50dc1f5abaaae9a2d3.zip |
struct bug: mismanagement of static slot store.
The bug_unless statement was found to go off, indicating an
internal problem. Indeed, the store of inherited static slots
were being set to non-nil by incorrect copying in two places.
This is harmless in and of itself; it's just a way of being
tidy. If a slot's value is located elsewhere, then the local
store must be nil.
* struct.c (static_slot_home_fixup): After fetching a fresh
copy of the home type's stslot entry, clear the store to nil.
(make_struct_type): Likewise.
(struct_type_mark): Use assert for this rather than
bug_unless, because it happens in the middle of garbage
collection. Throwing an exception out of the middle of gc is a
nonstarter.
Diffstat (limited to 'share')
0 files changed, 0 insertions, 0 deletions