From 72e27092d4dafd73cdb8b73003b59c0c63af2a95 Mon Sep 17 00:00:00 2001 From: cuz Date: Fri, 6 Apr 2001 09:07:48 +0000 Subject: [PATCH] Fixed a bug. Function declarations where the type of the first parameter is 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 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cc65/declare.c b/src/cc65/declare.c index b6a92f844..3ef54e059 100644 --- a/src/cc65/declare.c +++ b/src/cc65/declare.c @@ -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 */ -- 2.39.5