From b2b54118f284dc4b5ae64824cce89d5bd58e04a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 18 Jan 2021 20:27:05 +0100 Subject: [PATCH] =?UTF-8?q?AS3:=20Incorrect=20handling=20of=20strict=20equ?= =?UTF-8?q?als=20operator=20in=20if=20vs=20switch=20resulting=20in=20?= =?UTF-8?q?=C2=A7=C2=A7pop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../flash/abc/avm2/graph/AVM2Graph.java | 4 +--- .../decompiler/flash/ActionScript3Test.java | 10 +++++++++ .../flashdevelop/bin/flashdevelop.swf | Bin 15850 -> 16115 bytes .../testdata/flashdevelop/src/Main.as | 1 + .../src/tests/TestStrictEquals.as | 21 ++++++++++++++++++ 6 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestStrictEquals.as diff --git a/CHANGELOG.md b/CHANGELOG.md index a6e11c32b..e143468c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. - Using new FFDec icon on Mac - AS3: get/set slot for global scope - Better continue in for / goto detection +- AS3: Incorrect handling of strict equals operator in if vs switch resulting in §§pop ### Changed - AS3 test methods separated to classes diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index e4d1286d4..499f6e9a9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -537,9 +537,7 @@ public class AVM2Graph extends Graph { switchedObject = new LocalRegAVM2Item(null, null, rightReg, null); } - if(leftReg < 0 && rightReg < 0){ - - } else if (cnt == 1) { + if ((leftReg < 0 && rightReg < 0) || (cnt == 1)) { stack.push(set); } else { part = part.nextParts.get(1); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java index e2f86f2b4..4cfd1ff46 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java @@ -910,6 +910,16 @@ public class ActionScript3Test extends ActionScriptTestBase { false); } + @Test + public void testStrictEquals() { + decompileMethod("testStrictEquals", "var k:int = 6;\r\n" + + "if(this.f() !== this.f())\r\n" + + "{\r\n" + + "trace(\"is eight\");\r\n" + + "}\r\n", + false); + } + @Test public void testStringConcat() { decompileMethod("testStringConcat", "var k:int = 8;\r\n" diff --git a/libsrc/ffdec_lib/testdata/flashdevelop/bin/flashdevelop.swf b/libsrc/ffdec_lib/testdata/flashdevelop/bin/flashdevelop.swf index e05772276b8b7157542d61b7e58e2132e0b1ecea..62b1f8ae63af4fb9dd8151523fc3b751dc9f16cd 100644 GIT binary patch literal 16115 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