From d69d81ea3fdd137ae4000a6bb7f053aeb78f67af Mon Sep 17 00:00:00 2001 From: nename0 <26363498+nename0@users.noreply.github.com> Date: Fri, 19 Apr 2019 15:46:50 +0200 Subject: [PATCH] the p-code generation of lookupswitch now correctly does -1 from the count of cases (#74) --- .../flash/abc/avm2/parser/script/AVM2SourceGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index 09b0239ef..7f216b0c2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -661,7 +661,7 @@ public class AVM2SourceGenerator implements SourceGenerator { bodiesOffsets.add(0, -(insToBytes(bodies).length + casesLen)); } lookupOp.operands[0] = defOffset; - lookupOp.operands[1] = item.valuesMapping.size(); + lookupOp.operands[1] = item.valuesMapping.size() - 1; // as per avm2 spec: "There are case_count+1 case offsets" for (int i = 0; i < item.valuesMapping.size(); i++) { lookupOp.operands[2 + i] = bodiesOffsets.get(item.valuesMapping.get(i)); }