Fix 3.5, 3.6 while true if/break bug

This commit is contained in:
rocky
2017-01-08 15:54:49 -05:00
parent 66518baed0
commit 3f40c16587
6 changed files with 18 additions and 3 deletions

View File

@@ -851,7 +851,8 @@ class Scanner3(Scanner):
'start': start,
'end': pre_rtarget})
self.not_continue.add(pre_rtarget)
elif code[pre_rtarget] == self.opc.RETURN_VALUE:
elif code[pre_rtarget] in (self.opc.RETURN_VALUE,
self.opc.BREAK_LOOP):
self.structs.append({'type': 'if-then',
'start': start,
'end': rtarget})
@@ -881,7 +882,12 @@ class Scanner3(Scanner):
return
pass
pass
self.return_end_ifs.add(pre_rtarget)
if code[pre_rtarget] == self.opc.RETURN_VALUE:
self.return_end_ifs.add(pre_rtarget)
else:
self.fixed_jumps[offset] = rtarget
self.not_continue.add(pre_rtarget)
elif op == self.opc.SETUP_EXCEPT:
target = self.get_target(offset)