From ebf5153f3530bd4d3a1eb5242e6e7f0d32dd67ea Mon Sep 17 00:00:00 2001 From: ceriel Date: Tue, 26 Jan 1993 11:58:00 +0000 Subject: [PATCH] Fix small bug: space following a replacement list was included in the list --- lang/cem/cemcom.ansi/domacro.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lang/cem/cemcom.ansi/domacro.c b/lang/cem/cemcom.ansi/domacro.c index 6a5f0b57c..9f97682ff 100644 --- a/lang/cem/cemcom.ansi/domacro.c +++ b/lang/cem/cemcom.ansi/domacro.c @@ -645,7 +645,7 @@ get_text(formals, length) *repl->r_ptr = '\0'; while ((c != EOI) && (class(c) != STNL)) { if (BLANK(c)) { - if (!blank++) add2repl(repl, ' '); + blank++; c = GetChar(); continue; } @@ -653,6 +653,10 @@ get_text(formals, length) if (c == '\'' || c == '"') { register int delim = c; + if (blank) { + blank = 0; + add2repl(repl, ' '); + } do { add2repl(repl, c); if (c == '\\') add2repl(repl, GetChar()); @@ -668,10 +672,15 @@ get_text(formals, length) c = GetChar(); if (c == '*') { skipcomment(); - if (!blank++) add2repl(repl, ' '); + blank++; c = GetChar(); continue; - } else add2repl(repl, '/'); + } + if (blank) { + blank = 0; + add2repl(repl, ' '); + } + add2repl(repl, '/'); } else if (formals && (class(c) == STIDF || class(c) == STELL)) { char id_buf[IDFSIZE + 1]; @@ -686,6 +695,11 @@ get_text(formals, length) *idp++ = c; } while (in_idf(c)); *--idp = '\0'; + + if (blank) { + blank = 0; + add2repl(repl, ' '); + } /* construct the formal parameter mark or identifier */ if (n = find_name(id_buf, formals)) add2repl(repl, FORMALP | (char) n); @@ -694,11 +708,15 @@ get_text(formals, length) while (*idp) add2repl(repl, *idp++); } } else if (class(c) == STNUM) { + if (blank) { + blank = 0; + add2repl(repl, ' '); + } add2repl(repl, c); if (c == '.') { c = GetChar(); if (class(c) != STNUM) { - blank = 0; continue; + continue; } add2repl(repl, c); } @@ -715,10 +733,13 @@ get_text(formals, length) } } } else { + if (blank) { + blank = 0; + add2repl(repl, ' '); + } add2repl(repl, c); c = GetChar(); } - blank = 0; } *length = repl->r_ptr - repl->r_text; return Realloc(repl->r_text, (unsigned)(repl->r_ptr - repl->r_text +1));