From 39459168b011b958fe9f7c84714b8ad019245ea1 Mon Sep 17 00:00:00 2001 From: rocky Date: Thu, 16 Jan 2020 14:02:04 -0500 Subject: [PATCH] More stringent "ifstmt" checks on 3.x --- uncompyle6/parsers/parse3.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index 0b8a0f79..73e48984 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -1510,13 +1510,19 @@ class Python3Parser(PythonParser): condition_jump2 = tokens[min(last - 1, len(tokens) - 1)] if condition_jump2.kind.startswith("POP_JUMP_IF"): return condition_jump.attr == condition_jump2.attr + + last = min(last, n-1) + if tokens[last] == "COME_FROM" and tokens[last].off2int() != condition_jump.attr: + return False + + # if condition_jump.attr < condition_jump2.off2int(): # print("XXX", first, last) # for t in range(first, last): print(tokens[t]) # from trepan.api import debug; debug() return condition_jump.attr < condition_jump2.off2int() return False - elif rule == ("ifstmt", ("testexpr", "\\e___ifstmts_jump")): + elif rule == ("ifstmt", ("testexpr", "\\e__ifstmts_jump")): # I am not sure what to check. # Probably needs fixing elsewhere return True