From f36fab3c7b730e0226cf91f040bfc58e61cb4825 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 15 Oct 2025 13:20:11 +0200 Subject: sanity checks --- c.c | 13 +++++++++---- lex.c | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/c.c b/c.c index abd6a46..8da24a3 100644 --- a/c.c +++ b/c.c @@ -29,11 +29,16 @@ lexc(struct comp *cm, struct token *tk) vec_of(char) rest = VINIT(buf, sizeof buf); do { lex(&cm->lx, &tk2); - vpushn(&rest, tk2.s, tk2.len); + if (tk) { + joinspan(&tk->span.ex, tk2.span.ex); + vpushn(&rest, tk2.s, tk2.len); + } } while (peek(cm, NULL) == TKSTRLIT); - tk->s = memcpy(alloc(&cm->exarena, tk->len + rest.n, 0), tk->s, tk->len); - memcpy((char *)tk->s + tk->len, rest.p, rest.n); - tk->len += rest.n; + if (tk) { + tk->s = memcpy(alloc(&cm->exarena, tk->len + rest.n, 0), tk->s, tk->len); + memcpy((char *)tk->s + tk->len, rest.p, rest.n); + tk->len += rest.n; + } vfree(&rest); } return t; diff --git a/lex.c b/lex.c index 2daa0bc..52cd9b8 100644 --- a/lex.c +++ b/lex.c @@ -647,6 +647,7 @@ putmac(struct macro *mac) uint h, i, n = arraylength(macroht); struct macro *slot; + assert(mac->name); i = h = ptrhash(mac->name); for (;; ++i) { i &= arraylength(macroht) - 1; -- cgit v1.2.3