diff options
| author | Michael Matz <matz@suse.de> | 2017-05-27 22:44:53 +0200 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2017-05-27 22:44:53 +0200 |
| commit | 31e5ad789a51be34fe4fb8c7f18bd8f36c6c28c0 (patch) | |
| tree | 9db04ead4392804bd08e373a54d67fa699b62c15 | |
| parent | 7cd1ae7710aefad30e2f9893fbf6d3db29f8ae01 (diff) | |
| download | tinycc-31e5ad789a51be34fe4fb8c7f18bd8f36c6c28c0.tar.gz tinycc-31e5ad789a51be34fe4fb8c7f18bd8f36c6c28c0.tar.bz2 | |
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.
| -rw-r--r-- | tccgen.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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)"); } |
