fix in preprocessor part: macro invocation with parameterlist on the
authorceriel <none@none>
Fri, 29 Jul 1988 18:38:25 +0000 (18:38 +0000)
committerceriel <none@none>
Fri, 29 Jul 1988 18:38:25 +0000 (18:38 +0000)
next line did not work

lang/cem/cemcom/domacro.c
lang/cem/cemcom/replace.c
lang/cem/cemcom/skip.c
util/cpp/domacro.c
util/cpp/replace.c
util/cpp/skip.c

index b2f2ea9..ee52883 100644 (file)
@@ -288,7 +288,7 @@ do_define()
                LoadChar(ch);
        }
        /* read the replacement text if there is any                    */
-       ch = skipspaces(ch);    /* find first character of the text     */
+       ch = skipspaces(ch,0);  /* find first character of the text     */
        ASSERT(ch != EOI);
        if (class(ch) == STNL) {
                /*      Treat `#define something' as `#define something ""'
@@ -415,7 +415,7 @@ getparams(buf, parbuf)
        register char **pbuf2;
 
        LoadChar(c);
-       c = skipspaces(c);
+       c = skipspaces(c,0);
        if (c == ')') {         /* no parameters: #define name()        */
                *pbuf = (char *) 0;
                return 0;
@@ -448,7 +448,7 @@ getparams(buf, parbuf)
                }
 
                pbuf++;
-               c = skipspaces(c);
+               c = skipspaces(c,0);
                if (c == ')') { /* end of the formal parameter list     */
                        *pbuf = (char *) 0;
                        return pbuf - buf;
@@ -458,7 +458,7 @@ getparams(buf, parbuf)
                        return -1;
                }
                LoadChar(c);
-               c = skipspaces(c);
+               c = skipspaces(c,0);
        }
        /*NOTREACHED*/
 }
index dafa2fa..82af873 100644 (file)
@@ -68,7 +68,7 @@ replace(idef)
                        return 0;
                }
                LoadChar(c);
-               c = skipspaces(c);
+               c = skipspaces(c,1);
                if (c != '(') {         /* no replacement if no ()      */
                        lexerror("(warning) macro %s needs arguments",
                                idef->id_text);
index cac3553..53b2312 100644 (file)
 
 #ifndef NOPP
 PRIVATE int
-skipspaces(ch)
+skipspaces(ch, skipnl)
        register int ch;
 {
        /*      skipspaces() skips any white space and returns the first
                non-space character.
        */
        for (;;) {
-               while (class(ch) == STSKIP)
+               while (class(ch) == STSKIP || (skipnl && class(ch) == STNL))
                        LoadChar(ch);
 
                /* How about "\\\n"?????????    */
index aa8cd71..2e84e41 100644 (file)
@@ -307,7 +307,7 @@ do_define()
                LoadChar(ch);
        }
        /* read the replacement text if there is any                    */
-       ch = skipspaces(ch);    /* find first character of the text     */
+       ch = skipspaces(ch,0);  /* find first character of the text     */
        assert(ch != EOI);
        if (class(ch) == STNL) {
                /*      Treat `#define something' as `#define something ""'
@@ -463,7 +463,7 @@ getparams(buf, parbuf)
        register char **pbuf2;
 
        LoadChar(c);
-       c = skipspaces(c);
+       c = skipspaces(c,0);
        if (c == ')') {         /* no parameters: #define name()        */
                *pbuf = (char *) 0;
                return 0;
@@ -496,7 +496,7 @@ getparams(buf, parbuf)
                }
 
                pbuf++;
-               c = skipspaces(c);
+               c = skipspaces(c,0);
                if (c == ')') { /* end of the formal parameter list     */
                        *pbuf = (char *) 0;
                        return pbuf - buf;
@@ -506,7 +506,7 @@ getparams(buf, parbuf)
                        return -1;
                }
                LoadChar(c);
-               c = skipspaces(c);
+               c = skipspaces(c,0);
        }
        /*NOTREACHED*/
 }
index 36cfafa..9299cdb 100644 (file)
@@ -64,7 +64,7 @@ replace(idef)
                        return 0;
                }
                LoadChar(c);
-               c = skipspaces(c);
+               c = skipspaces(c,1);
                if (c != '(') {         /* no replacement if no ()      */
                        error("macro %s needs arguments",
                                idef->id_text);
index 641b3ef..42a6697 100644 (file)
@@ -10,7 +10,7 @@
 #include       "input.h"
 
 int
-skipspaces(ch)
+skipspaces(ch, skipnl)
        register int ch;
 {
        /*      skipspaces() skips any white space and returns the first
@@ -19,6 +19,11 @@ skipspaces(ch)
        for (;;) {
                while (class(ch) == STSKIP)
                        LoadChar(ch);
+               if (skipnl && class(ch) == STNL) {
+                       LoadChar(ch);
+                       ++LineNumber;
+                       continue;
+               }
                /* How about "\\\n"?????????    */
                if (ch == '/') {
                        LoadChar(ch);