(create_definition): Error if comma not followed by an identifier.
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 29 Nov 1994 00:53:27 +0000 (16:53 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 29 Nov 1994 00:53:27 +0000 (16:53 -0800)
(create_definition): Error if comma not followed by an
identifier.
(collect_expansion): Error if # used in macro with no arguments.

From-SVN: r8567

gcc/cccp.c

index 58a82363c2bc8b335dee3eec45fe7cbffca79163..3e6379a32d07d2f8a4ce986a709173f6372ecdcc 100644 (file)
@@ -5375,6 +5375,11 @@ create_definition (buf, limit, op)
       if (*bp == ',') {
        bp++;
        SKIP_WHITE_SPACE (bp);
+       /* A comma at this point can only be followed by an identifier.  */
+       if (!is_idstart[*bp]) {
+         error ("badly punctuated parameter list in `#define'");
+         goto nope;
+       }
       }
       if (bp >= limit) {
        error ("unterminated parameter list in `#define'");
@@ -5776,7 +5781,7 @@ collect_expansion (buf, end, nargs, arglist)
             Don't leave the # in the expansion.  */
          exp_p--;
          SKIP_WHITE_SPACE (p);
-         if (p == limit || ! is_idstart[*p])
+         if (p == limit || ! is_idstart[*p] || nargs == 0)
            error ("`#' operator is not followed by a macro argument name");
          else
            stringify = p;