diff options
author | Chris Craik <ccraik@google.com> | 2013-06-10 11:28:51 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2013-06-10 11:30:37 -0700 |
commit | 9abddd54d4177d1a9790889046407da13aa7077b (patch) | |
tree | 2cc51803d2aa7c8e6bbc5d950c20eda0f878f667 /libs | |
parent | 8d8fc469952ffe3feb45e52388f2129f8dd5e40c (diff) | |
download | frameworks_base-9abddd54d4177d1a9790889046407da13aa7077b.zip frameworks_base-9abddd54d4177d1a9790889046407da13aa7077b.tar.gz frameworks_base-9abddd54d4177d1a9790889046407da13aa7077b.tar.bz2 |
Workaround possible use after delete
bug:9321162
Change-Id: Ic35af5b5925da56e9a143e6b33658831038f3b72
Diffstat (limited to 'libs')
-rw-r--r-- | libs/hwui/DisplayList.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libs/hwui/DisplayList.cpp b/libs/hwui/DisplayList.cpp index 648da9c..1cbd531 100644 --- a/libs/hwui/DisplayList.cpp +++ b/libs/hwui/DisplayList.cpp @@ -63,6 +63,7 @@ void DisplayList::destroyDisplayListDeferred(DisplayList* displayList) { void DisplayList::clearResources() { mDisplayListData = NULL; + mSize = 0; // TODO: shouldn't be needed, WAR possible use after delete mClipRectOp = NULL; mSaveLayerOp = NULL; @@ -479,7 +480,7 @@ void DisplayList::replay(ReplayStateStruct& replayStruct, const int level) { */ template <class T> void DisplayList::iterate(OpenGLRenderer& renderer, T& handler, const int level) { - if (mSize == 0 || mAlpha <= 0) { + if (mSize == 0 || mAlpha <= 0 || CC_UNLIKELY(!mSaveOp)) { // TODO: shouldn't need mSaveOp check DISPLAY_LIST_LOGD("%*sEmpty display list (%p, %s)", level * 2, "", this, mName.string()); return; } |