summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2013-06-10 11:28:51 -0700
committerChris Craik <ccraik@google.com>2013-06-10 11:30:37 -0700
commit9abddd54d4177d1a9790889046407da13aa7077b (patch)
tree2cc51803d2aa7c8e6bbc5d950c20eda0f878f667 /libs
parent8d8fc469952ffe3feb45e52388f2129f8dd5e40c (diff)
downloadframeworks_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.cpp3
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;
}