From 76c291929c4655a4310ff985f42d7d1ddca53536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 31 Aug 2025 16:41:31 +0200 Subject: [PATCH] Swf tools try..catch fix --- .../jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 5a0ecb587..0cbe9a6ef 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 @@ -1400,8 +1400,15 @@ public class AVM2Graph extends Graph { //should not happen finallyCommands.clear(); } + //remove Dup before switch + if (!finallyCommands.isEmpty() && finallyCommands.get(finallyCommands.size() - 1) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) finallyCommands.get(finallyCommands.size() - 1); + if (st.value instanceof PopItem) { + finallyCommands.remove(finallyCommands.size() - 1); + } + } stack.pop(); //duplicated switched value - stack.pop(); //value switched by lookupswitch + stack.pop(); //value switched by lookupswitch } }