summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Keith Mok <ek9852@gmail.com> 2016-07-13 14:45:16 -0700
committer Keith Mok <ek9852@gmail.com> 2016-07-13 15:20:47 -0700
commitde89c2fd708d9d7a7e7990e2d6da77c8481a0217 (patch)
tree27c409ec10c632b15f65c25fe9316ad1d2dfe350
parent8ee58b3b4eb09d5208a2c4c2b60be7d0ac99b3b8 (diff)
Fix random crash in libhwui
On some cases (noticed from log) that there is a crash in libhwui.so, future debug log shows that the light center position values are nan, causing an out of bound access in hull function in SpotShadow.cpp for parameter retPoly which assume to be of maximum length of pointsLength only but not the case when all points are nan. More log shows that a Snapshot was created (new) without mRelativeLightCenter begin set, and Layer.cpp trying to use it by calling updateLightPosFromRenderer. Those values are random values in stack which causing math calc based on that value returning nan also. Initialize mRelativeLightCenter to 0 in Snapshot.cpp to avoid the problem. Change-Id: I9e24f6f1f856d053d09db1b1aae100f219f2a6de
-rw-r--r--libs/hwui/Snapshot.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/libs/hwui/Snapshot.cpp b/libs/hwui/Snapshot.cpp
index beb2e1d0481c..3da3a572fd0a 100644
--- a/libs/hwui/Snapshot.cpp
+++ b/libs/hwui/Snapshot.cpp
@@ -40,6 +40,7 @@ Snapshot::Snapshot()
, mClipArea(&mClipAreaRoot) {
transform = &mTransformRoot;
region = nullptr;
+ mRelativeLightCenter.x = mRelativeLightCenter.y = mRelativeLightCenter.z = 0;
}
/**