| Index: src/pdf/SkPDFBitmap.cpp | 
| diff --git a/src/pdf/SkPDFBitmap.cpp b/src/pdf/SkPDFBitmap.cpp | 
| index 0a9453df43ed45cbfdfeda7f5220bcbad21c7ed8..159c9e73a38c049670f23de2fdda64c8bd82781b 100644 | 
| --- a/src/pdf/SkPDFBitmap.cpp | 
| +++ b/src/pdf/SkPDFBitmap.cpp | 
| @@ -18,7 +18,17 @@ | 
| void image_get_ro_pixels(const SkImage* image, SkBitmap* dst) { | 
| if(as_IB(image)->getROPixels(dst) | 
| && dst->dimensions() == image->dimensions()) { | 
| -        return; | 
| +        if (dst->colorType() != kIndex_8_SkColorType) { | 
| +            return; | 
| +        } | 
| +        // We must check to see if the bitmap has a color table. | 
| +        SkAutoLockPixels autoLockPixels(*dst); | 
| +        if (!dst->getColorTable()) { | 
| +            // We can't use an indexed bitmap with no colortable. | 
| +            dst->reset(); | 
| +        } else { | 
| +            return; | 
| +        } | 
| } | 
| // no pixels or wrong size: fill with zeros. | 
| SkAlphaType at = image->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaType; | 
| @@ -326,8 +336,6 @@ static void emit_image_xobject(SkWStream* stream, | 
| SkBitmap bitmap; | 
| image_get_ro_pixels(image, &bitmap);      // TODO(halcanary): test | 
| SkAutoLockPixels autoLockPixels(bitmap);  // with malformed images. | 
| -    SkASSERT(bitmap.colorType() != kIndex_8_SkColorType || | 
| -             bitmap.getColorTable()); | 
|  | 
| // Write to a temporary buffer to get the compressed length. | 
| SkDynamicMemoryWStream buffer; | 
|  |