diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-05-20 00:41:52 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-05-20 00:41:52 -0700 |
commit | 2536072b64006004c2999005a1961025725f8bfa (patch) | |
tree | 1d96491f3f5578520afa9fd602026d8a71874a7f /txr.c | |
parent | 0069c0b05d810c001c1ab9947b1f8f333caede14 (diff) | |
download | txr-2536072b64006004c2999005a1961025725f8bfa.tar.gz txr-2536072b64006004c2999005a1961025725f8bfa.tar.bz2 txr-2536072b64006004c2999005a1961025725f8bfa.zip |
ffi: bugfix: clone of type points to old self.
* ffi.c (ffi_type_copy, ffi_type_copy_new_ops): The cloned txr_ffi_type
structure must have a self member which points to the new cobj,
not the original one. Otherwise things are inconsistent. For instance
if the clone is being made for the purposes of adjusting alignment,
any operation which chases the self pointer will be accessing incorrect
attributes. One example of this is (alignof foo.bar) where if bar
is the clone of a type, this will incorrectly report the alignment of
the original from which bar was cloned, and the original alignment,
not the adjusted alignment is reported.
Diffstat (limited to 'txr.c')
0 files changed, 0 insertions, 0 deletions