| Index: src/codec/SkBmpStandardCodec.cpp
|
| diff --git a/src/codec/SkBmpStandardCodec.cpp b/src/codec/SkBmpStandardCodec.cpp
|
| index 07596e167720112e08ad78001cb95cd58554f2be..203e7da654568c0de1e8e33e427e96a41fd64ca4 100644
|
| --- a/src/codec/SkBmpStandardCodec.cpp
|
| +++ b/src/codec/SkBmpStandardCodec.cpp
|
| @@ -152,9 +152,9 @@
|
| return true;
|
| }
|
|
|
| -void SkBmpStandardCodec::initializeSwizzler(const SkImageInfo& dstInfo, const Options& opts) {
|
| +bool SkBmpStandardCodec::initializeSwizzler(const SkImageInfo& dstInfo, const Options& opts) {
|
| // Get swizzler configuration
|
| - SkSwizzler::SrcConfig config = SkSwizzler::kUnknown;
|
| + SkSwizzler::SrcConfig config;
|
| switch (this->bitsPerPixel()) {
|
| case 1:
|
| config = SkSwizzler::kIndex1;
|
| @@ -180,6 +180,7 @@
|
| break;
|
| default:
|
| SkASSERT(false);
|
| + return false;
|
| }
|
|
|
| // Get a pointer to the color table if it exists
|
| @@ -187,7 +188,11 @@
|
|
|
| // Create swizzler
|
| fSwizzler.reset(SkSwizzler::CreateSwizzler(config, colorPtr, dstInfo, opts));
|
| - SkASSERT(fSwizzler);
|
| +
|
| + if (nullptr == fSwizzler.get()) {
|
| + return false;
|
| + }
|
| + return true;
|
| }
|
|
|
| SkCodec::Result SkBmpStandardCodec::prepareToDecode(const SkImageInfo& dstInfo,
|
| @@ -202,8 +207,11 @@
|
| // Copy the color table to the client if necessary
|
| copy_color_table(dstInfo, this->fColorTable, inputColorPtr, inputColorCount);
|
|
|
| - // Initialize a swizzler
|
| - this->initializeSwizzler(dstInfo, options);
|
| + // Initialize a swizzler if necessary
|
| + if (!this->initializeSwizzler(dstInfo, options)) {
|
| + SkCodecPrintf("Error: cannot initialize swizzler.\n");
|
| + return SkCodec::kInvalidConversion;
|
| + }
|
| return SkCodec::kSuccess;
|
| }
|
|
|
|
|