You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
Misc bugs
This commit is contained in:
BIN
test/bytecode_3.6/02_ifelse_lambda.pyc
Normal file
BIN
test/bytecode_3.6/02_ifelse_lambda.pyc
Normal file
Binary file not shown.
@@ -58,10 +58,11 @@ class Python24Parser(Python25Parser):
|
|||||||
if invalid:
|
if invalid:
|
||||||
return invalid
|
return invalid
|
||||||
|
|
||||||
# FiXME: this code never gets called...
|
|
||||||
lhs = rule[0]
|
lhs = rule[0]
|
||||||
if lhs == 'nop_stmt':
|
if lhs == 'nop_stmt':
|
||||||
return not int(tokens[first].pattr) == tokens[last].offset
|
l = len(tokens)
|
||||||
|
if 0 <= l < len(tokens):
|
||||||
|
return not int(tokens[first].pattr) == tokens[last].offset
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@@ -947,7 +947,7 @@ class Scanner3(Scanner):
|
|||||||
return
|
return
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
if code[pre_rtarget] == self.opc.RETURN_VALUE and self.version < 3.5:
|
if code[pre_rtarget] == self.opc.RETURN_VALUE:
|
||||||
self.return_end_ifs.add(pre_rtarget)
|
self.return_end_ifs.add(pre_rtarget)
|
||||||
else:
|
else:
|
||||||
self.fixed_jumps[offset] = rtarget
|
self.fixed_jumps[offset] = rtarget
|
||||||
@@ -967,7 +967,7 @@ class Scanner3(Scanner):
|
|||||||
if target > next_offset:
|
if target > next_offset:
|
||||||
next_op = code[next_offset]
|
next_op = code[next_offset]
|
||||||
if (self.opc.JUMP_ABSOLUTE == next_op and
|
if (self.opc.JUMP_ABSOLUTE == next_op and
|
||||||
END_FINALLY != code[xdis.next_offset(next_op, self.opc, next_offset)]):
|
self.opc.END_FINALLY != code[xdis.next_offset(next_op, self.opc, next_offset)]):
|
||||||
self.fixed_jumps[next_offset] = target
|
self.fixed_jumps[next_offset] = target
|
||||||
self.except_targets[target] = next_offset
|
self.except_targets[target] = next_offset
|
||||||
|
|
||||||
@@ -990,7 +990,8 @@ class Scanner3(Scanner):
|
|||||||
# misclassified as RETURN_END_IF. Handle that here.
|
# misclassified as RETURN_END_IF. Handle that here.
|
||||||
# In RETURN_VALUE, JUMP_ABSOLUTE, RETURN_VALUE is never RETURN_END_IF
|
# In RETURN_VALUE, JUMP_ABSOLUTE, RETURN_VALUE is never RETURN_END_IF
|
||||||
if op == self.opc.RETURN_VALUE:
|
if op == self.opc.RETURN_VALUE:
|
||||||
if (offset+1 < len(code) and code[offset+1] == self.opc.JUMP_ABSOLUTE and
|
next_offset = xdis.next_offset(op, self.opc, offset)
|
||||||
|
if (next_offset < len(code) and code[next_offset] == self.opc.JUMP_ABSOLUTE and
|
||||||
offset in self.return_end_ifs):
|
offset in self.return_end_ifs):
|
||||||
self.return_end_ifs.remove(offset)
|
self.return_end_ifs.remove(offset)
|
||||||
pass
|
pass
|
||||||
|
Reference in New Issue
Block a user