From d269393753c57bd1d1977d714d8d0e0b3c7b5d37 Mon Sep 17 00:00:00 2001 From: "JesusFreke@JesusFreke.com" Date: Mon, 10 Aug 2009 06:59:19 +0000 Subject: [PATCH] Fixed size calculation in placeItem git-svn-id: https://smali.googlecode.com/svn/trunk@380 55b6fa8a-2a1e-11de-a435-ffa8d773f76a --- dexlib/src/main/java/org/jf/dexlib/CodeItem.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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;