| Index: src/core/SkPixelRef.cpp
|
| diff --git a/src/core/SkPixelRef.cpp b/src/core/SkPixelRef.cpp
|
| index b5daf0b57a90ca0321babf11c37da2eef05fab93..740d269a27a339065b4a91c9f8fa8fbb4d80ca94 100644
|
| --- a/src/core/SkPixelRef.cpp
|
| +++ b/src/core/SkPixelRef.cpp
|
| @@ -178,6 +178,10 @@ void SkPixelRef::lockPixels() {
|
|
|
| if (1 == ++fLockCount) {
|
| fPixels = this->onLockPixels(&fColorTable);
|
| + // If onLockPixels failed, it will return NULL
|
| + if (NULL == fPixels) {
|
| + fColorTable = NULL;
|
| + }
|
| }
|
| }
|
| }
|
| @@ -190,9 +194,14 @@ void SkPixelRef::unlockPixels() {
|
|
|
| SkASSERT(fLockCount > 0);
|
| if (0 == --fLockCount) {
|
| - this->onUnlockPixels();
|
| - fPixels = NULL;
|
| - fColorTable = NULL;
|
| + // don't call onUnlockPixels unless onLockPixels succeeded
|
| + if (fPixels) {
|
| + this->onUnlockPixels();
|
| + fPixels = NULL;
|
| + fColorTable = NULL;
|
| + } else {
|
| + SkASSERT(NULL == fColorTable);
|
| + }
|
| }
|
| }
|
| }
|
|
|