aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2017-03-31 16:24:17 -0700
committerBen Gruver <bgruv@google.com>2017-03-31 17:06:53 -0700
commit10fd792f5970274e66f1ce9956f9188ec77cfb43 (patch)
treeeadb44a67488cbec8d8b5e958f3e6bf393171f2e
parentcef72530bbbd71ae287a06088bd729f5c0070429 (diff)
downloadsmali-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.
-rw-r--r--smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaPackedSwitchPayload.java2
-rw-r--r--smalidea/src/main/java/org/jf/smalidea/dexlib/instruction/SmalideaSparseSwitchPayload.java2
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;
}
};
}