commit f83f8e2064258e2d96e94b4702943ddf1b30239e
parent d40e75a1f12f03a658fe8e89f84e672baf981b97
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Sun, 29 Jul 2012 10:55:55 +0200
Removed return value in listdcl
After a function is not needed a semi colon. One way of handling this
situation is let to listdcl return a value indicating a function was
declared, or better expect the semi colon in listdcl itself.
Diffstat:
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/decl.c b/decl.c
@@ -125,7 +125,7 @@ static void declarator(void)
 		pushtype(*bp);
 }
 
-static unsigned char listdcl(register struct ctype *tp)
+static void listdcl(register struct ctype *tp)
 {
 	do {
 		register  struct ctype *new;
@@ -138,11 +138,10 @@ static unsigned char listdcl(register struct ctype *tp)
 				      yytext);
 		} else if (new->type == FTN && yytoken == '{') {
 			compound();
-			return 0;
+			return;
 		}
 	} while (accept(','));
-
-	return 1;
+	expect(';');
 }
 
 unsigned char decl(void)
@@ -151,21 +150,21 @@ unsigned char decl(void)
 
 	if (accept(';'))
 		return 1;
-	tp = newctype();
 
+	tp = newctype();
 	if (!spec(tp)) {
 		if (curctx != OUTER_CTX)
 			return 0;
 		warning("data definition has no type or storage class");
 	}
-	if (yytoken == ';') {
+	if (accept(';')) {
 		warning_error(options.useless,
 			      "useless type name in empty declaration");
-	} else if (listdcl(tp)) { /* in case of not being a function */
-		expect(';');
+	} else {
+		listdcl(tp);
 	}
-
 	delctype(tp);
+
 	return 1;
 }