From ceccd3ead3884afba95fd21ba1967d01acd2f2df Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Fri, 11 Mar 2016 22:35:44 +0100 Subject: tccgen.c: Fix flex array members some more Last fix didn't work for function f1int in the added testcase. --- tccgen.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'tccgen.c') diff --git a/tccgen.c b/tccgen.c index 270d11c..11bf009 100644 --- a/tccgen.c +++ b/tccgen.c @@ -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) -- cgit v1.3.1