scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit eb8960812d92714eb568df36e09d8c76af5cd46c
parent 9057ad5dbe07ea11e717cc08f69a26bd7e6abc60
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Mon,  7 Oct 2024 17:12:58 +0200

cc1: Fix lexer for strings

There were some leftovers from older versions of the code and
the logic was inverted, making that escape sequences were wrongly
processed.

Diffstat:
Msrc/cmd/cc/cc1/lex.c | 12+++---------
1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/src/cmd/cc/cc1/lex.c b/src/cmd/cc/cc1/lex.c @@ -649,14 +649,13 @@ static int string(void) { char *bp = yytext; - int c, esc; + int c; *bp++ = '"'; - esc = 0; for (++input->p; ; ++input->p) { c = *input->p; - if (c == '"' && !esc) + if (c == '"') break; if (c == '\0') { @@ -664,12 +663,7 @@ string(void) break; } - if (c == '\\' && !esc && disescape) - esc = 1; - else - esc = 0; - - if (c == '\\' && !esc) + if (c == '\\' && !disescape) c = escape(); if (bp == &yytext[STRINGSIZ+1]) {