diff options
| author | 2015-06-16 10:29:31 -0700 | |
|---|---|---|
| committer | 2015-06-16 10:29:31 -0700 | |
| commit | 3f725f0a5abd23833176bdc26fda964e923e75de (patch) | |
| tree | 6d043228a90695c33ba52f5a5cab69a80ce1e1c7 /libs/hwui/RenderNode.cpp | |
| parent | 6138a43ca9b312014bc9f57c1802180dc88188b2 (diff) | |
Fix null deref
Bug: 21857172
willHaveFunctor was assuming that either mStagingDisplayList
or mDisplayList would be non-null but this isn't true. Both
can be null in some scenarios (notably after a trimMemory)
Change-Id: Ia2915b84cfc907ec9c7cbec54ed6dc26283ec998
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
| -rw-r--r-- | libs/hwui/RenderNode.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index b4cbc3617cc5..fc184913e1c1 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -241,8 +241,12 @@ void RenderNode::prepareTreeImpl(TreeInfo& info, bool functorsNeedLayer) { animatorDirtyMask = mAnimatorManager.animate(info); } - bool willHaveFunctor = info.mode == TreeInfo::MODE_FULL && mStagingDisplayListData - ? !mStagingDisplayListData->functors.isEmpty() : !mDisplayListData->functors.isEmpty(); + bool willHaveFunctor = false; + if (info.mode == TreeInfo::MODE_FULL && mStagingDisplayListData) { + willHaveFunctor = !mStagingDisplayListData->functors.isEmpty(); + } else if (mDisplayListData) { + willHaveFunctor = !mDisplayListData->functors.isEmpty(); + } bool childFunctorsNeedLayer = mProperties.prepareForFunctorPresence( willHaveFunctor, functorsNeedLayer); |