Don't allow instructions to merge over the end boundary of a try block

git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@1000 379699f6-c40d-0410-875b-85095c16579e
stable
jochen 25 years ago
parent ad1866f6a6
commit 60e617facd
  1. 8
      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)

Loading…
Cancel
Save