From: eck Date: Fri, 31 Aug 1990 10:27:12 +0000 (+0000) Subject: fixed two little bugs X-Git-Tag: release-5-5~1576 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=f614fc6dc3beaf475016ca7095047c81572fbfdd;p=ack.git fixed two little bugs --- diff --git a/lang/cem/cpp.ansi/domacro.c b/lang/cem/cpp.ansi/domacro.c index 1690f89fa..4447394b3 100644 --- a/lang/cem/cpp.ansi/domacro.c +++ b/lang/cem/cpp.ansi/domacro.c @@ -203,9 +203,20 @@ int to_endif; on the same level. */ id = findidf(tk.tk_str); + if (id == (struct idf *)0) { + /* invalid word seen after the '#' */ + error("%s: unknown control", tk.tk_str); + } free(tk.tk_str); + if (id == (struct idf *)0) continue; switch(id->id_resmac) { - default: + case K_DEFINE: + case K_ERROR: + case K_INCLUDE: + case K_LINE: + case K_PRAGMA: + case K_UNDEF: + case K_FILE: SkipToNewLine(); break; case K_IF: diff --git a/lang/cem/cpp.ansi/preprocess.c b/lang/cem/cpp.ansi/preprocess.c index f80ec0014..b39d5daf4 100644 --- a/lang/cem/cpp.ansi/preprocess.c +++ b/lang/cem/cpp.ansi/preprocess.c @@ -215,10 +215,10 @@ preprocess(fn) case STCHAR: { register int stopc = c; - int escaped = 0; + int escaped; do { - + escaped = 0; echo(c); c = GetChar(); if (c == '\n') { @@ -230,14 +230,14 @@ preprocess(fn) flush((int)(op-_obuf)); return; } - if (!escaped && c == '\\') { + if (c == '\\') { echo(c); c = GetChar(); if (c == '\n') { ++LineNumber; lineno++; } else escaped = 1; - } else escaped = 0; + } } while (escaped || c != stopc); echo(c); if (c == '\n')