From a582666135ad4bb1e0f5119e1b5c6bbf68044394 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 31 Aug 2022 15:37:27 +0200 Subject: self hosting !!! with some workarounds though . --- src/parse.cff | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/parse.cff') diff --git a/src/parse.cff b/src/parse.cff index 45803bf..b1dca70 100644 --- a/src/parse.cff +++ b/src/parse.cff @@ -316,9 +316,9 @@ fn lex(P *Parser) Tok { if ep.tepl { arg.toks[0].loc = tok.loc; } - P.curexpan = memcpy(xmalloc(sizeof Expan), &Expan { - P.curexpan, {}, arg.toks, - }, sizeof Expan); + let old = P.curexpan; + P.curexpan = xcalloc(sizeof Expan, 1); + *P.curexpan = { old, {}, arg.toks }; return lex(P); } } @@ -1031,7 +1031,8 @@ fn parseexpandtepl(P *Parser, tepl *Tepl) *const Type { P.curexpan, args[0::nparam], tepl.toks, tname, tok.loc, #{tepl?} #t, }; ++P.expanno; - P.curexpan = memcpy(xmalloc(sizeof Expan), &expan, sizeof Expan); + P.curexpan = xcalloc(sizeof Expan,1); + *P.curexpan = expan; ty = parseagg(P, loc, tepl.kind, tname, &decl); } P.peektok = :None; @@ -1415,8 +1416,8 @@ fn parseexpandmacro(P *Parser, loc Loc, mac *Macro) void { P.peektok = :None; expan.toks = c.body; ++P.expanno; - P.curexpan = memcpy(xmalloc(sizeof Expan), &expan, sizeof Expan); - + P.curexpan = xmalloc(sizeof Expan); + *P.curexpan = expan; } fn parseblock0(P *Parser) Block; -- cgit v1.2.3