The debugger in step-through mode. I'm guessing that it's some compiler-specific "optimization" or the closing of the switch statement (when you step through, a lot of the time it bounces back up to the check to close the loop). However, the case 3 break is definitely not ignored - you can manipulate its place (put things before and after), and see that it is definitely being caught there.
It's the code generator to blame and the short term memory of it: once the jump
out of the switch statement has been found (possibly it was a 'short' and 'relative'
jump, jump to that jump instruction and all will be fine. Possibly a later code
generating/optimizing pass over the code can remove cascaded jumps as well.
kind regards,
Jos