diff options
| author | Michael Matz <matz@suse.de> | 2016-03-11 22:35:44 +0100 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2016-03-11 22:35:44 +0100 |
| commit | ceccd3ead3884afba95fd21ba1967d01acd2f2df (patch) | |
| tree | 654a668d1f8925398ec7e277b05a9b8c9955ea88 /tccgen.c | |
| parent | 7e0ad4fdd2d5359799f16732df07e00c8719c1e6 (diff) | |
| download | tinycc-ceccd3ead3884afba95fd21ba1967d01acd2f2df.tar.gz tinycc-ceccd3ead3884afba95fd21ba1967d01acd2f2df.tar.bz2 | |
tccgen.c: Fix flex array members some more
Last fix didn't work for function f1int in the added testcase.
Diffstat (limited to 'tccgen.c')
| -rw-r--r-- | tccgen.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -5846,8 +5846,12 @@ static void decl_initializer_alloc(CType *type, AttributeDef *ad, int r, if (size < 0) tcc_error("unknown type size"); } - if (flexible_array) - size += flexible_array->type.ref->c * pointed_size(&flexible_array->type) + 1; + /* If there's a flex member and it was used in the initializer + adjust size. */ + if (flexible_array && + flexible_array->type.ref->c > 0) + size += flexible_array->type.ref->c + * pointed_size(&flexible_array->type); /* take into account specified alignment if bigger */ if (ad->a.aligned) { if (ad->a.aligned > align) |
