changed UnGetChar() to ChPushBack() in domacro.c
authoreck <none@none>
Fri, 5 Jan 1990 09:28:54 +0000 (09:28 +0000)
committereck <none@none>
Fri, 5 Jan 1990 09:28:54 +0000 (09:28 +0000)
lang/cem/cemcom.ansi/domacro.c
lang/cem/cpp.ansi/domacro.c

index f6b5270..abc73e6 100644 (file)
@@ -336,7 +336,8 @@ do_define()
        /* read the replacement text if there is any                    */
        ch = skipspaces(ch,0);  /* find first character of the text     */
        ASSERT(ch != EOI);
-       UnGetChar();
+       /* UngetChar() is not right when replacement starts with a '/' */
+       ChPushBack(ch);
        repl_text = get_text((nformals > 0) ? formals : 0, &length);
        macro_def(id, repl_text, nformals, length, NOFLAG);
        LineNumber++;
@@ -626,11 +627,10 @@ get_text(formals, length)
                        c = GetChar();
                        if (c == '*') {
                                skipcomment();
-                               if(blank++) add2repl(repl, ' ');
+                               if (!blank++) add2repl(repl, ' ');
                                c = GetChar();
                                continue;
-                       }
-                       else add2repl(repl, '/');
+                       } else add2repl(repl, '/');
                } else if (formals
                            && (class(c) == STIDF || class(c) == STELL)) {
                        char id_buf[IDFSIZE + 1];
index 012b936..38f1c5b 100644 (file)
@@ -347,7 +347,8 @@ do_define()
        /* read the replacement text if there is any                    */
        ch = skipspaces(ch,0);  /* find first character of the text     */
        assert(ch != EOI);
-       UnGetChar();
+       /* UngetChar() is not right when replacement starts with a '/' */
+       ChPushBack(ch);
        repl_text = get_text((nformals > 0) ? formals : 0, &length);
        macro_def(str2idf(str, 0), repl_text, nformals, length, NOFLAG);
        LineNumber++;