From 241d8a84e549c40190ecbbfeb63078293c49dfb0 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 7 Mar 2011 17:49:54 -0800 Subject: [PATCH] fix [4026375] SensorManager quaternion functions can call sqrt with a negative number [DO NOT MERGE] Just make sure to clamp the argument to zero. Bug: 4026375 Change-Id: Idd3d4ef977e87c1b3f6b54371105c3152d7dc6b9 --- core/java/android/hardware/SensorManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java index f079e42a9993..cc821709d849 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]; -- 2.11.0