From b83d6c64edd7346df737a48f87ee41b02c31d2aa Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 29 Oct 2017 23:52:58 -0400 Subject: [PATCH] Python 3.6 control flow bug... Much more is needed, but it's a start --- test/bytecode_3.6/10_extended_arg_loop.pyc | Bin 0 -> 964 bytes .../bug36/10_extended_arg_loop.py | 49 ++++++++++++++++++ uncompyle6/parsers/parse36.py | 5 ++ uncompyle6/scanners/scanner3.py | 16 ++++-- 4 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 test/bytecode_3.6/10_extended_arg_loop.pyc create mode 100644 test/simple_source/bug36/10_extended_arg_loop.py diff --git a/test/bytecode_3.6/10_extended_arg_loop.pyc b/test/bytecode_3.6/10_extended_arg_loop.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac0dfa517a34e6a041ef6156bfa743374e38fbb0 GIT binary patch literal 964 zcmYjQ&rcIU6n-;1U6!S-1qlWdlf7ut7zHFT#t>p+IG7kDKmzQ+&C;2+Te?4(nbnrG zCnS3G-|%1BtEYN09z1Z-H(SKc>_YJ~udh;%uOX;SB8jI|ni zgj-uM_%%EpA)|aTG6p?sgzRH$WU04%kSueC7z--K_w3%>B@p1{s>B>#U4`B}pSvUk zX7?Py`F#f3J#*z3f;9y8;ADy|Aog>Lap#tu${)IlE9|ZzsPXxdt!~t;z?gBjcgJM8 z&Ebl!0%|lW99}d1N0kw~hZuo`-u7vnxnGI2XS*Mxf+OGyWe31}tMB@BW8J6E)+JsN zT)4Zbm&vpv!`OEZg^Z&l)PhgS2)nEVy}Tygq=M}ye{e_>H5Us@4OPLiPtjidmf z0Lwo3uFR7_wPciOpS4mc{Dv5aR<5HIaUJSh`SV!S5=y1ABrsvnO5-?8xbj()=yqYn zs#DCpdAB2FDvRoVp6DnR(-rGSN*BzuE1Y)J7fBe4g7wlUDcpl09xL7%M7n9?FL>JV zo&Vb6FiNtaDe;$*RK{UH&^K3!^88AMm$Xqbt8X9|@wnHIRTO7^5vVkmEwOf*cQ&7| zZL9}kphdz3H>VEzX_`IFh6OVXs#vDB(E(+|Msq18l(;wI offset: - self.fixed_jumps[offset] = rtarget + if self.version >= 3.6: + if target > offset: + self.fixed_jumps[offset] = target + pass + else: + # FIXME: This is probably a bug in < 3.6 and we should + # instead use the above code. But until we smoke things + # out we'll stick with it. + if rtarget > offset: + self.fixed_jumps[offset] = rtarget elif op == self.opc.SETUP_EXCEPT: target = self.get_target(offset, extended_arg)