From 0d1e125832d0fd8ca31c5f782e7c3db774ae5a02 Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 14 Aug 2022 11:16:03 +0200 Subject: woa --- bootstrap/cgen.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'bootstrap/cgen.c') diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c index 5c64a30..39cbba0 100644 --- a/bootstrap/cgen.c +++ b/bootstrap/cgen.c @@ -50,7 +50,11 @@ pristring(const char *s, u64 n) { extern int isprint(int); pri("\""); for (int i = 0; i < n; ++i) { - if (isprint(s[i])) + if (s[i] == '"') + pri("\\\""); + else if (s[i] == '\\') + pri("\\\\"); + else if (isprint(s[i])) pri("%c", s[i]); else fprintf(outfp, "\\%.3o", s[i]); @@ -699,6 +703,7 @@ genstatic(bool externp, const char *cname, struct var *var) { static void gendecl(struct decl *decl, bool toplevel) { const char *p = fileid2path(decl->span.fileid); + if (decl->_gen) return; switch (decl->t) { case Dfn: pri("#line %d %S\n", decl->span.line, p, (u64)strlen(p)); @@ -718,6 +723,7 @@ gendecl(struct decl *decl, bool toplevel) { case Dtype: case Ddef: case Dtepl: case Dmacro: case Dlabel: break; } + decl->_gen = 1; } static void -- cgit v1.2.3