From 5e88a89ad7216608265b31458468a92c57fa0351 Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 23 Nov 2025 15:32:53 +0100 Subject: c: fix runtime implicit-length array initializer --- c/c.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'c/c.c') diff --git a/c/c.c b/c/c.c index 2b2688d..a6c61fc 100644 --- a/c/c.c +++ b/c/c.c @@ -1717,9 +1717,10 @@ initializer(struct comp *cm, union type *ty, enum evalmode ev, bool globl, } else { uint siz; if (isincomplete(*ty)) { - if (!ip->arrlen) + uint len = ip->arrlen > ip->cur->idx ? ip->arrlen : ip->cur->idx; + if (!len) error(&span, "initializer creates a zero-sized array"); - *ty = mkarrtype(typechild(*ty), ty->flag & TFCHLDQUAL, ip->arrlen > 0 ? ip->arrlen : 1); + *ty = mkarrtype(typechild(*ty), ty->flag & TFCHLDQUAL, len); } assert(arraylength(res.zero) == 1); -- cgit v1.2.3