diff --git a/dexlib/src/main/java/org/jf/dexlib/CodeItem.java b/dexlib/src/main/java/org/jf/dexlib/CodeItem.java index 04387a49..56765352 100644 --- a/dexlib/src/main/java/org/jf/dexlib/CodeItem.java +++ b/dexlib/src/main/java/org/jf/dexlib/CodeItem.java @@ -169,14 +169,15 @@ public class CodeItem extends Item { protected int placeItem(int offset) { offset += 16 + encodedInstructions.length; if (tries != null && tries.length > 0) { - if (encodedInstructions.length % 2 == 1) { - offset++; + if (encodedInstructions.length % 4 != 0) { + offset+=2; } offset += tries.length * 8; int encodedCatchHandlerBaseOffset = offset; + offset += Leb128Utils.unsignedLeb128Size(encodedCatchHandlers.length); for (EncodedCatchHandler encodedCatchHandler: encodedCatchHandlers) { - offset += encodedCatchHandler.place(offset, encodedCatchHandlerBaseOffset); + offset = encodedCatchHandler.place(offset, encodedCatchHandlerBaseOffset); } } return offset;