]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug. Function declarations where the type of the first parameter is
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 6 Apr 2001 09:07:48 +0000 (09:07 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 6 Apr 2001 09:07:48 +0000 (09:07 +0000)
a typedef and the name of the parameter is omitted where parse as old style
(K&R) function declarations leading to errors.

git-svn-id: svn://svn.cc65.org/cc65/trunk@688 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/declare.c

index b6a92f844219aa9954c606bea9a74523f404ef5c..3ef54e0597a23a5675261cb4aba8f33c6f3191bd 100644 (file)
@@ -741,8 +741,14 @@ static FuncDesc* ParseFuncDecl (void)
        NextToken ();
        F->Flags |= FD_VOID_PARAM;
     } else if (curtok == TOK_IDENT && (nxttok == TOK_COMMA || nxttok == TOK_RPAREN)) {
-       /* Old style (K&R) function. Assume variable param list. */
-               F->Flags |= (FD_OLDSTYLE | FD_VARIADIC);
+       /* If the identifier is a typedef, we have a new style parameter list,
+        * if it's some other identifier, it's an old style parameter list.
+        */
+       Sym = FindSym (CurTok.Ident);
+       if (Sym == 0 || !IsTypeDef (Sym)) {
+           /* Old style (K&R) function. Assume variable param list. */
+           F->Flags |= (FD_OLDSTYLE | FD_VARIADIC);
+       }
     }
 
     /* Parse params */