tccgen.c: Fix flex array members some more

Last fix didn't work for function f1int in the added testcase.
This commit is contained in:
Michael Matz
2016-03-11 22:35:44 +01:00
parent 7e0ad4fdd2
commit ceccd3ead3
3 changed files with 31 additions and 2 deletions

View File

@ -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)