fix in preprocessor part: macro invocation with parameterlist on the
next line did not work
This commit is contained in:
@@ -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*/
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user