FFI: Shrink container of packed bitfield.
Reported by Huang Haiyang. #1451
This commit is contained in:
parent
f322ecb51e
commit
e4c7d8b380
@ -1307,6 +1307,8 @@ static void cp_struct_layout(CPState *cp, CTypeID sid, CTInfo sattr)
|
|||||||
ct->info = CTINFO(CT_FIELD, ctype_cid(ct->info));
|
ct->info = CTINFO(CT_FIELD, ctype_cid(ct->info));
|
||||||
ct->size = (bofs >> 3); /* Store field offset. */
|
ct->size = (bofs >> 3); /* Store field offset. */
|
||||||
} else {
|
} else {
|
||||||
|
if (csz > amask+1 && bsz <= amask+1)
|
||||||
|
csz = amask+1; /* Shrink container of packed bitfield. */
|
||||||
ct->info = CTINFO(CT_BITFIELD,
|
ct->info = CTINFO(CT_BITFIELD,
|
||||||
(info & (CTF_QUAL|CTF_UNSIGNED|CTF_BOOL)) +
|
(info & (CTF_QUAL|CTF_UNSIGNED|CTF_BOOL)) +
|
||||||
(csz << (CTSHIFT_BITCSZ-3)) + (bsz << CTSHIFT_BITBSZ));
|
(csz << (CTSHIFT_BITCSZ-3)) + (bsz << CTSHIFT_BITBSZ));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user