diff options
author | Ben Gruver <bgruv@google.com> | 2017-03-31 16:24:17 -0700 |
---|---|---|
committer | Ben Gruver <bgruv@google.com> | 2017-03-31 17:06:53 -0700 |
commit | 10fd792f5970274e66f1ce9956f9188ec77cfb43 (patch) | |
tree | eadb44a67488cbec8d8b5e958f3e6bf393171f2e | |
parent | cef72530bbbd71ae287a06088bd729f5c0070429 (diff) | |
download | smali-10fd792f5970274e66f1ce9956f9188ec77cfb43.tar.gz |
Correctly calculate the offset for switch targets in smalidea
This fixes an issue where watches on registers (among other things) don't
work inside a method containing a switch statement, due to a failure
analyzing the method.
2 files changed, 2 insertions, 2 deletions
diff --git a/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaPackedSwitchPayload.java b/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaPackedSwitchPayload.java index 9d2a0fc3..6056da37 100644 --- a/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaPackedSwitchPayload.java +++ b/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaPackedSwitchPayload.java @@ -86,7 +86,7 @@ public class SmalideaPackedSwitchPayload extends SmalideaInstruction implements return 0; } - return label.getOffset() - baseOffset; + return (label.getOffset() - baseOffset) / 2; } }); } diff --git a/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaSparseSwitchPayload.java b/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaSparseSwitchPayload.java index 15eaea2d..832c8807 100644 --- a/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaSparseSwitchPayload.java +++ b/smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaSparseSwitchPayload.java @@ -79,7 +79,7 @@ public class SmalideaSparseSwitchPayload extends SmalideaInstruction implements return 0; } - return label.getOffset() - baseOffset; + return (label.getOffset() - baseOffset) / 2; } }; } |