summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorKeith Mok <kmok@cyngn.com>2016-07-13 14:45:16 -0700
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-07-18 12:33:14 -0700
commitde7ee4c9efb8ba1cddc6bd79122b4a4a4bda6866 (patch)
tree8103333c7409d5af776f33acc91104dfeddbee36 /libs
parent80dc20482fc1f72efb854e349323c77f635d6ced (diff)
downloadframeworks_base-de7ee4c9efb8ba1cddc6bd79122b4a4a4bda6866.zip
frameworks_base-de7ee4c9efb8ba1cddc6bd79122b4a4a4bda6866.tar.gz
frameworks_base-de7ee4c9efb8ba1cddc6bd79122b4a4a4bda6866.tar.bz2
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
Diffstat (limited to 'libs')
-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 beb2e1d..3da3a57 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;
}
/**