summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-03-09 16:54:14 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-09 16:54:14 -0800
commitc05d35db1c57de97888f16ed74718e4c676e4a9b (patch)
tree3e190462ef4fc090f24efa7aeef1307871cab31b
parentbd0e806a61df9b67890dc3b1390db554e7468b4a (diff)
parent241d8a84e549c40190ecbbfeb63078293c49dfb0 (diff)
downloadframeworks_base-c05d35db1c57de97888f16ed74718e4c676e4a9b.zip
frameworks_base-c05d35db1c57de97888f16ed74718e4c676e4a9b.tar.gz
frameworks_base-c05d35db1c57de97888f16ed74718e4c676e4a9b.tar.bz2
Merge "fix [4026375] SensorManager quaternion functions can call sqrt with a negative number [DO NOT MERGE]" into gingerbread
-rw-r--r--core/java/android/hardware/SensorManager.java4
1 files changed, 2 insertions, 2 deletions
diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java
index f079e42..cc82170 100644
--- a/core/java/android/hardware/SensorManager.java
+++ b/core/java/android/hardware/SensorManager.java
@@ -2026,8 +2026,8 @@ public class SensorManager
if (rv.length == 4) {
Q[0] = rv[3];
} else {
- //In this case, the w component of the quaternion is known to be a positive number
- Q[0] = (float)Math.sqrt(1 - rv[0]*rv[0] - rv[1]*rv[1] - rv[2]*rv[2]);
+ Q[0] = 1 - rv[0]*rv[0] - rv[1]*rv[1] - rv[2]*rv[2];
+ Q[0] = (Q[0] > 0) ? (float)Math.sqrt(Q[0]) : 0;
}
Q[1] = rv[0];
Q[2] = rv[1];