diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/util/InstructionWriteUtil.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/util/InstructionWriteUtil.java index f729dd72..4f238a8a 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/writer/util/InstructionWriteUtil.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/util/InstructionWriteUtil.java @@ -193,7 +193,7 @@ public class InstructionWriteUtil { } else if (instruction.getOpcode().format.equals(Format.Format20t) && !offsetToNewInstructionMap.containsKey(currentCodeOffset)) { int targetOffset = ((Instruction20t)instruction).getCodeOffset(); int codeOffsetDelta = codeOffsetShift(currentCodeOffset); - int newTargetOffset = targetOffsetShift(currentCodeOffset, targetOffset); + int newTargetOffset = targetOffset + targetOffsetShift(currentCodeOffset, targetOffset); if ((short)newTargetOffset != newTargetOffset) { codeOffsetShifts.add(codeOffsetDelta, currentCodeOffset+instruction.getCodeUnits()); offsetToNewInstructionMap.put(currentCodeOffset, Format.Format30t);