| Index: src/images/SkImageDecoder.cpp
|
| diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp
|
| index f9b04e39a7b3de3b247221a13426ef663c42c647..2d41e9346f5a39cab112085e5cc2766cfdcf7a52 100644
|
| --- a/src/images/SkImageDecoder.cpp
|
| +++ b/src/images/SkImageDecoder.cpp
|
| @@ -156,7 +156,8 @@ SkColorType SkImageDecoder::getPrefColorType(SrcDepth srcDepth, bool srcHasAlpha
|
| return ct;
|
| }
|
|
|
| -bool SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref, Mode mode) {
|
| +SkImageDecoder::Result SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref,
|
| + Mode mode) {
|
| // we reset this to false before calling onDecode
|
| fShouldCancelDecode = false;
|
| // assign this, for use by getPrefColorType(), in case fUsePrefTable is false
|
| @@ -164,12 +165,12 @@ bool SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref, Mo
|
|
|
| // pass a temporary bitmap, so that if we return false, we are assured of
|
| // leaving the caller's bitmap untouched.
|
| - SkBitmap tmp;
|
| - if (!this->onDecode(stream, &tmp, mode)) {
|
| - return false;
|
| + SkBitmap tmp;
|
| + const Result result = this->onDecode(stream, &tmp, mode);
|
| + if (kFailure != result) {
|
| + bm->swap(tmp);
|
| }
|
| - bm->swap(tmp);
|
| - return true;
|
| + return result;
|
| }
|
|
|
| bool SkImageDecoder::decodeSubset(SkBitmap* bm, const SkIRect& rect, SkColorType pref) {
|
|
|