From 6149bc3a40e55ec6525aed42c9f2b2d480f20969 Mon Sep 17 00:00:00 2001 From: lemon Date: Thu, 23 Oct 2025 09:04:36 +0200 Subject: eval: fix indexing string literal --- c/eval.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/c/eval.c b/c/eval.c index 68e8981..64eee42 100644 --- a/c/eval.c +++ b/c/eval.c @@ -93,13 +93,13 @@ unop(struct expr *ex, enum evalmode mode) assert(sub->sub[1].t == ENUMLIT && isint(sub->sub[1].ty)); off = sub->sub[1].u; p = sub->sub[0].s.p, len = sub->sub[0].s.n; - csiz = typesize(sub->sub[0].ty); + csiz = typesize(typechild(sub->sub[0].ty)); } else if (sub->t == EADD && sub->sub[1].t == ESTRLIT && eval(&sub->sub[0], EVINTCONST)) { /* 0["s"] */ assert(sub->sub[0].t == ENUMLIT && isint(sub->sub[0].ty)); off = sub->sub[0].u; p = sub->sub[1].s.p, len = sub->sub[1].s.n; - csiz = typesize(sub->sub[1].ty); + csiz = typesize(typechild(sub->sub[1].ty)); } else return 0; if (off > len) return 0; ex->t = ENUMLIT; -- cgit v1.2.3