* jode/flow/CatchBlock.java.in (combineLocal): Added more checks

if LocalStoreOperator is of the right form.


git-svn-id: https://svn.code.sf.net/p/jode/code/branches/branch_1_1@1326 379699f6-c40d-0410-875b-85095c16579e
branch_1_1
hoenicke 24 years ago
parent a65fd35ceb
commit aca789beed
  1. 5
      jode/ChangeLog
  2. 25
      jode/jode/flow/CatchBlock.java.in

@ -1,3 +1,8 @@
2001-07-11 Jochen Hoenicke <jochen@gnu.org>
* jode/flow/CatchBlock.java.in (combineLocal): Added more checks
if LocalStoreOperator is of the right form.
2001-07-10 Jochen Hoenicke <jochen@gnu.org>
* jode/obfuscator/modules/SimpleAnalyzer.java.in:

@ -24,6 +24,7 @@ import jode.decompiler.Declarable;
import jode.expr.Expression;
import jode.expr.LocalLoadOperator;
import jode.expr.LocalStoreOperator;
import jode.expr.NopOperator;
import jode.expr.StoreInstruction;
import jode.util.SimpleSet;
@ -218,17 +219,19 @@ public class CatchBlock extends StructuredBlock {
} else if (firstInstr instanceof InstructionBlock) {
Expression instr =
((InstructionBlock) firstInstr).getInstruction();
if (instr instanceof StoreInstruction
&& (((StoreInstruction)instr).getLValue()
instanceof LocalStoreOperator)) {
/* The exception is stored in a local variable */
exceptionLocal = ((LocalStoreOperator)
((StoreInstruction)instr).getLValue())
.getLocalInfo();
exceptionLocal.setType(exceptionType);
firstInstr.removeBlock();
return true;
}
if (instr instanceof StoreInstruction) {
StoreInstruction store = (StoreInstruction) instr;
if (store.getOperatorIndex() == store.OPASSIGN_OP
&& store.getSubExpressions()[1] instanceof NopOperator
&& store.getLValue() instanceof LocalStoreOperator) {
/* The exception is stored in a local variable */
exceptionLocal = ((LocalStoreOperator) store.getLValue())
.getLocalInfo();
exceptionLocal.setType(exceptionType);
firstInstr.removeBlock();
return true;
}
}
}
return false;
}

Loading…
Cancel
Save