*/
register char *ptr = idf->id_macro->mc_text;
int err = 0;
+ int func = idf->id_macro->mc_nps != -1;
char *stringify();
assert(ptr[idf->id_macro->mc_length] == '\0');
ptr++;
} while (*ptr != delim || *ptr == '\0');
add2repl(repl, *ptr++);
- } else if (*ptr == '#') {
+ } else if (func && *ptr == '#') {
if (*++ptr == '#') {
register int tmpindex;
/* ## - paste operator */
repl->r_text[tmpindex] = TOKSEP;
}
}
- } else /* # operator */
- ptr = stringify(repl, ptr, args);
+ } else { /* # operator */
+ ptr = stringify(repl, ptr, args);
+ }
} else if (*ptr & FORMALP) {
/* insert actual parameter */
register int n = *ptr++ & 0177;
if (*(repl->r_ptr-1) != TOKSEP)
add2repl(repl, TOKSEP);
- } else
+ } else {
add2repl(repl, *ptr++);
+ }
}
if (err)
error("illegal use of ## operator");