diff options
| author | Michael Matz <matz@suse.de> | 2016-06-28 15:09:40 +0200 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2016-12-15 17:47:06 +0100 |
| commit | 6763b02abc5e0076b6f5bc0e116205250ef9fbd6 (patch) | |
| tree | 485cd722ea5e69f0b0cafb9c64ca894ccf9ef3ca | |
| parent | d5d881d9e946351f00cbc851b965f62553f6e830 (diff) | |
| download | tinycc-6763b02abc5e0076b6f5bc0e116205250ef9fbd6.tar.gz tinycc-6763b02abc5e0076b6f5bc0e116205250ef9fbd6.tar.bz2 | |
Accept empty struct member decls
struct S { /*nothing*/; int a; };
is an acceptable struct declaration, there may be stray semicolons
in the member list.
| -rw-r--r-- | tccgen.c | 5 | ||||
| -rw-r--r-- | tests/tcctest.c | 5 |
2 files changed, 9 insertions, 1 deletions
@@ -3250,7 +3250,10 @@ static void struct_decl(CType *type, AttributeDef *ad, int u) offset = 0; flexible = 0; while (tok != '}') { - parse_btype(&btype, &ad1); + if (!parse_btype(&btype, &ad1)) { + skip(';'); + continue; + } while (1) { extra_bytes = 0; if (flexible) diff --git a/tests/tcctest.c b/tests/tcctest.c index 7fd8171..41a9a10 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -642,6 +642,11 @@ union union2 { struct struct1 st1, st2; +struct empty_mem { + /* nothing */ ; + int x; +}; + int main(int argc, char **argv) { string_test(); |
