From 3f725f0a5abd23833176bdc26fda964e923e75de Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 16 Jun 2015 10:29:31 -0700 Subject: [PATCH] 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 --- libs/hwui/RenderNode.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index b4cbc3617cc5c..fc184913e1c11 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);