diff --git a/jode/jode/decompiler/MethodAnalyzer.java b/jode/jode/decompiler/MethodAnalyzer.java index 424e3f5..7ed8d68 100644 --- a/jode/jode/decompiler/MethodAnalyzer.java +++ b/jode/jode/decompiler/MethodAnalyzer.java @@ -249,6 +249,13 @@ public class MethodAnalyzer implements Analyzer, Scope, ClassDeclarer { for (int i=0; i < handlers.length; i++) { Instruction instr = handlers[i].start; + if (instr.tmpInfo == null) + instr.tmpInfo + = new FlowBlock(this, instr.addr, instr.length); + /* end doesn't have a predecessor, but we must prevent + * it from being merged with the previous instructions. + */ + instr = handlers[i].end.nextByAddr; if (instr.tmpInfo == null) instr.tmpInfo = new FlowBlock(this, instr.addr, instr.length); @@ -285,7 +292,6 @@ public class MethodAnalyzer implements Analyzer, Scope, ClassDeclarer { && !instr.alwaysJumps && instr.succs == null) { lastBlock.doSequentialT2(block, instr.length); - } else { if (instr.tmpInfo == null)