aboutsummaryrefslogtreecommitdiff
path: root/tccgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'tccgen.c')
-rw-r--r--tccgen.c8
1 files changed, 6 insertions, 2 deletions
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)