diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorRegisters.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorRegisters.java index ba917a153..67f9baf7a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorRegisters.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorRegisters.java @@ -296,7 +296,7 @@ public class AVM2DeobfuscatorRegisters extends AVM2DeobfuscatorSimple { break; } } - } catch (InterruptedException ex) { + } catch (ThreadDeath | InterruptedException ex) { throw ex; } catch (Throwable ex) { //ignore diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java index 45604405a..78dddb48a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java @@ -355,7 +355,7 @@ public final class MethodBody implements Cloneable { if (Configuration.autoDeobfuscate.get()) { try { code.removeTraps(constants, trait, method_info.get(this.method_info), body, abc, scriptIndex, classIndex, isStatic, path); - } catch (InterruptedException ex) { + } catch (ThreadDeath | InterruptedException ex) { throw ex; } catch (Throwable ex) { //ignore diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index 2e6c3e01e..462444de0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -52,8 +52,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; /** * @@ -559,7 +557,7 @@ public class Graph { List forFinalCommands = new ArrayList<>(); for (int j = i - 1; j >= 0; j--) { - GraphTargetItem itemJ = list.get(i); + GraphTargetItem itemJ = list.get(j); if (itemJ.getLine() == whileExprLine && !(itemJ instanceof LoopItem /*to avoid recursion and StackOverflow*/)) { forFirstCommands.add(0, itemJ); toDelete[j] = true; @@ -836,7 +834,7 @@ public class Graph { private void getPrecontinues(String path, BaseLocalData localData, GraphPart parent, GraphPart part, List allParts, List loops, List stopPart) throws InterruptedException { try { markLevels(path, localData, part, allParts, loops); - } catch (InterruptedException iex) { + } catch (ThreadDeath | InterruptedException iex) { throw iex; } catch (Throwable ex) { //It is unusual code so markLevels failed, nevermind, it can still work