diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index a892c80a..adc52a86 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -354,8 +354,6 @@ class Python3Parser(PythonParser): COME_FROM_LOOP whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK NOP COME_FROM_LOOP - whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK NOP - COME_FROM_LOOP forstmt ::= SETUP_LOOP expr _for designator for_block POP_BLOCK NOP COME_FROM_LOOP """ diff --git a/uncompyle6/scanners/scanner2.py b/uncompyle6/scanners/scanner2.py index 0ffb78ef..4675f37d 100644 --- a/uncompyle6/scanners/scanner2.py +++ b/uncompyle6/scanners/scanner2.py @@ -446,10 +446,16 @@ class Scanner2(scan.Scanner): if self.version < 2.7 and self.code[jmp] in self.jump_forward: self.not_continue.add(jmp) jmp = self.get_target(jmp) + prev_offset = self.prev[except_match] + # COMPARE_OP argument should be "exception match" or 10 + if (self.code[prev_offset] == self.opc.COMPARE_OP and + self.code[prev_offset+1] != 10): + return None if jmp not in self.pop_jump_if | self.jump_forward: self.ignore_if.add(except_match) return None + self.ignore_if.add(except_match) self.not_continue.add(jmp) return jmp