diff --git a/jode/jode/bytecode/Opcodes.java b/jode/jode/bytecode/Opcodes.java index 61c985a..d4a285f 100644 --- a/jode/jode/bytecode/Opcodes.java +++ b/jode/jode/bytecode/Opcodes.java @@ -584,12 +584,13 @@ public abstract class Opcodes { } case opc_ireturn: case opc_lreturn: case opc_freturn: case opc_dreturn: case opc_areturn: { - Type retType = ca.getMethod().getReturnType(); + /* Address -1 is interpreted as end of method */ + Type retType = Type.tSubType(ca.getMethod().getReturnType()); return createBlock - (ca, addr, 1, new ReturnBlock(new NopOperator(retType))); + (ca, addr, 1, new ReturnBlock(new NopOperator(retType), + new Jump(-1))); } case opc_return: - /* Address -1 is interpreted as end of method */ return createBlock (ca, addr, 1, new EmptyBlock(new Jump(-1))); case opc_getstatic: @@ -662,7 +663,8 @@ public abstract class Opcodes { case opc_athrow: return createBlock (ca, addr, 1, - new ThrowBlock(new NopOperator(Type.tUObject))); + new ThrowBlock(new NopOperator(Type.tUObject), + new Jump(-1))); case opc_checkcast: { CpoolClass cpcls = (CpoolClass) ca.method.classAnalyzer.getConstant