]> git.sur5r.net Git - cc65/commitdiff
Fix consecutive false errors when a label without a following statement is
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 30 Dec 2010 19:30:54 +0000 (19:30 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 30 Dec 2010 19:30:54 +0000 (19:30 +0000)
encountered.

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

src/cc65/stmt.c

index 5bc4df4a9bf52e8834b6a756437f56d3f4010d11..74fbf6ea9fc545fea4c70762e45732d535c5cf94 100644 (file)
@@ -71,7 +71,7 @@
 
 
 
-static void CheckLabelWithoutStatement (void)
+static int CheckLabelWithoutStatement (void)
 /* Called from Statement() after a label definition. Will check for a
  * following closing curly brace. This means that a label is not followed
  * by a statement which is required by the standard. Output an error if so.
@@ -79,6 +79,9 @@ static void CheckLabelWithoutStatement (void)
 {
     if (CurTok.Tok == TOK_RCURLY) {
         Error ("Label at end of compound statement");
+        return 1;
+    } else {
+        return 0;
     }
 }
 
@@ -569,7 +572,9 @@ int Statement (int* PendingToken)
     while (CurTok.Tok == TOK_IDENT && NextTok.Tok == TOK_COLON) {
        /* Handle the label */
        DoLabel ();
-        CheckLabelWithoutStatement ();
+        if (CheckLabelWithoutStatement ()) {
+            return 0;
+        }
     }
 
     switch (CurTok.Tok) {
@@ -653,7 +658,7 @@ int Statement (int* PendingToken)
              * void, emit a warning.
              */
             GetCodePos (&End);
-            if (CodeRangeIsEmpty (&Start, &End) && 
+            if (CodeRangeIsEmpty (&Start, &End) &&
                 !IsTypeVoid (Expr.Type)         &&
                 IS_Get (&WarnNoEffect)) {
                 Warning ("Statement has no effect");