diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-05-08 06:30:24 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-05-08 06:30:24 -0700 |
commit | 38dc1622401faf4d11f7e9ddacca05703835530c (patch) | |
tree | e3f6685d0b533e2a1a0fe604d913f3d3f52d0be9 /ffi.c | |
parent | ec2b15ecda7f8c4e491bfeb8405e08bd8fe236d9 (diff) | |
download | txr-38dc1622401faf4d11f7e9ddacca05703835530c.tar.gz txr-38dc1622401faf4d11f7e9ddacca05703835530c.tar.bz2 txr-38dc1622401faf4d11f7e9ddacca05703835530c.zip |
ffi: don't zero out anonymous struct padding.
* ffi.c (ffi_struct_put, ffi_struct_out): Just skip the space
corresponding to the anonymous padding member; don't memset
with zeros. Doing this is inconsistent because we are not
zero-filling the ordinary alignment padding between members
and at the end of the struct. If the uninitialized garbage
is a problem in some uses, we can provide a variation of
the struct type which is zero initialized.
Diffstat (limited to 'ffi.c')
-rw-r--r-- | ffi.c | 4 |
1 files changed, 0 insertions, 4 deletions
@@ -929,8 +929,6 @@ static void ffi_struct_put(struct txr_ffi_type *tft, val strct, mem_t *dst, if (slsym) { val slval = slot(strct, slsym); mtft->put(mtft, slval, dst + offs, self); - } else { - memset(dst + offs, 0, mtft->size); } offs += mtft->size; } @@ -957,8 +955,6 @@ static void ffi_struct_out(struct txr_ffi_type *tft, int copy, val strct, val slval = slot(strct, slsym); mtft->put(mtft, slval, dst + offs, self); } - } else if (copy) { - memset(dst + offs, 0, mtft->size); } offs += mtft->size; } |