From f37de162c3455eba2712f4da03fe68e93983e398 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 29 Jun 2017 22:48:35 -0700 Subject: ffi: fix more bugginess in struct bitfield allocation. * ffi.c (make_ffi_type_struct): Fix incorrect shift calculations, which are still being done from the unit_offs byte rather than the correct offs byte where the bitfield is actually placed. It is bit_offs which has the correct bit offset of the bitfield relative to offs. --- ffi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ffi.c b/ffi.c index 98d126ce..3c8a1c8c 100644 --- a/ffi.c +++ b/ffi.c @@ -2906,9 +2906,9 @@ static val make_ffi_type_struct(val syntax, val lisp_type, memb[i].offs = offs; #if HAVE_LITTLE_ENDIAN - mtft->shift = bits_alloc; + mtft->shift = bit_offs; #else - mtft->shift = bits_int - bits_alloc - bits; + mtft->shift = bits_int - bit_offs - bits; #endif if (bits == bits_int) mtft->mask = UINT_MAX; -- cgit v1.2.3