Limit access end-of-struct warning a bit

Only warn if the struct has a non-zero size.  You can't create objects
of zero-sized structs, but they can be used inside sizeof (e.g.
"sizeof (struct {int :0;})".  The warning would always trigger for these,
but as no objects can be created no accesses can ever happen.
master
Michael Matz 2017-05-27 22:44:53 +02:00
parent 7cd1ae7710
commit 31e5ad789a
1 changed files with 1 additions and 1 deletions

View File

@ -3471,7 +3471,7 @@ static void struct_layout(CType *type, AttributeDef *ad)
type->ref->c = (c + (pcc ? (bit_pos + 7) >> 3 : 0)
+ maxalign - 1) & -maxalign;
type->ref->r = maxalign;
if (offset + size > type->ref->c)
if (offset + size > type->ref->c && type->ref->c)
tcc_warning("will touch memory past end of the struct (internal limitation)");
}