diff options
| -rw-r--r-- | src/lj_cparse.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lj_cparse.c b/src/lj_cparse.c index 45b05b36..f5c93d2e 100644 --- a/src/lj_cparse.c +++ b/src/lj_cparse.c | |||
| @@ -1307,6 +1307,8 @@ static void cp_struct_layout(CPState *cp, CTypeID sid, CTInfo sattr) | |||
| 1307 | ct->info = CTINFO(CT_FIELD, ctype_cid(ct->info)); | 1307 | ct->info = CTINFO(CT_FIELD, ctype_cid(ct->info)); |
| 1308 | ct->size = (bofs >> 3); /* Store field offset. */ | 1308 | ct->size = (bofs >> 3); /* Store field offset. */ |
| 1309 | } else { | 1309 | } else { |
| 1310 | if (csz > amask+1 && bsz <= amask+1) | ||
| 1311 | csz = amask+1; /* Shrink container of packed bitfield. */ | ||
| 1310 | ct->info = CTINFO(CT_BITFIELD, | 1312 | ct->info = CTINFO(CT_BITFIELD, |
| 1311 | (info & (CTF_QUAL|CTF_UNSIGNED|CTF_BOOL)) + | 1313 | (info & (CTF_QUAL|CTF_UNSIGNED|CTF_BOOL)) + |
| 1312 | (csz << (CTSHIFT_BITCSZ-3)) + (bsz << CTSHIFT_BITBSZ)); | 1314 | (csz << (CTSHIFT_BITCSZ-3)) + (bsz << CTSHIFT_BITBSZ)); |
