From 814580d4cfe7de0c8848fa081e547146d87d3b0b Mon Sep 17 00:00:00 2001 From: "JesusFreke@JesusFreke.com" Date: Wed, 5 Aug 2009 05:35:11 +0000 Subject: [PATCH] The stored offset is a relative offset from the position of the instruction, not an absolute offset git-svn-id: https://smali.googlecode.com/svn/trunk@364 55b6fa8a-2a1e-11de-a435-ffa8d773f76a --- .../main/java/org/jf/baksmali/Adaptors/MethodDefinition.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/MethodDefinition.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/MethodDefinition.java index 424f0b7d..d6474165 100644 --- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/MethodDefinition.java +++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/MethodDefinition.java @@ -218,11 +218,11 @@ public class MethodDefinition { if (opcode == Opcode.PACKED_SWITCH) { Instruction31t ins = (Instruction31t)opcode.format.Factory.makeInstruction( methodIdItem.getDexFile(), opcode, encodedInstructions, index); - packedSwitchMap.put(ins.getOffset(), index/2); + packedSwitchMap.put(index/2 + ins.getOffset(), index/2); } else if (opcode == Opcode.SPARSE_SWITCH) { Instruction31t ins = (Instruction31t)opcode.format.Factory.makeInstruction( methodIdItem.getDexFile(), opcode, encodedInstructions, index); - sparseSwitchMap.put(ins.getOffset(), index/2); + sparseSwitchMap.put(index/2 + ins.getOffset(), index/2); } }