From c5ccad1fc7823d2225ced6f2d235fb5a80e02763 Mon Sep 17 00:00:00 2001 From: cuz Date: Tue, 24 Jul 2001 20:08:58 +0000 Subject: [PATCH] Fixed a bug in CascadeSwitch git-svn-id: svn://svn.cc65.org/cc65/trunk@813 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cc65/stmt.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/cc65/stmt.c b/src/cc65/stmt.c index 9c2217cee..ab5fd239e 100644 --- a/src/cc65/stmt.c +++ b/src/cc65/stmt.c @@ -415,16 +415,18 @@ static void CascadeSwitch (ExprDesc* Expr) /* Emit a compare */ g_cmp (Flags, Val); - /* If another case follows, we will jump to the code if - * the condition is true. - */ - if (CurTok.Tok == TOK_CASE) { + /* If another case follows after the colon (which is + * currently pending and cannot be skipped since otherwise + * the debug infos will get wrong), we will jump to the + * code if the condition is true. + */ + if (NextTok.Tok == TOK_CASE) { /* Create a code label if needed */ if (CodeLab == 0) { CodeLab = GetLocalLabel (); } g_falsejump (CF_NONE, CodeLab); - } else if (CurTok.Tok != TOK_DEFAULT) { + } else if (NextTok.Tok != TOK_DEFAULT) { /* No case follows, jump to next selector */ if (NextLab == 0) { NextLab = GetLocalLabel ();