Index: src/images/SkImageDecoder_libgif.cpp |
diff --git a/src/images/SkImageDecoder_libgif.cpp b/src/images/SkImageDecoder_libgif.cpp |
index 81071c95158be16957e20d3fdfb0ad3554ade7ce..e7122d76676ee3d7a5a6411e5535fedfbff28745 100644 |
--- a/src/images/SkImageDecoder_libgif.cpp |
+++ b/src/images/SkImageDecoder_libgif.cpp |
@@ -417,6 +417,7 @@ bool SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* bm, Mode mode) { |
GifInterlaceIter iter(innerHeight); |
for (int y = 0; y < innerHeight; y++) { |
if (DGifGetLine(gif, scanline, innerWidth) == GIF_ERROR) { |
+#ifdef SK_DECODE_PARTIAL_IMAGES |
gif_warning(*bm, "interlace DGifGetLine"); |
memset(scanline, fillIndex, innerWidth); |
for (; y < innerHeight; y++) { |
@@ -424,6 +425,9 @@ bool SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* bm, Mode mode) { |
iter.next(); |
} |
return true; |
+#else |
+ return error_return(*bm, "interlace DGifGetLine"); |
+#endif |
} |
sampler.sampleInterlaced(scanline, iter.currY()); |
iter.next(); |
@@ -434,12 +438,16 @@ bool SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* bm, Mode mode) { |
skip_src_rows(gif, scanline, innerWidth, sampler.srcY0()); |
for (int y = 0; y < outHeight; y++) { |
if (DGifGetLine(gif, scanline, innerWidth) == GIF_ERROR) { |
+#ifdef SK_DECODE_PARTIAL_IMAGES |
gif_warning(*bm, "DGifGetLine"); |
memset(scanline, fillIndex, innerWidth); |
for (; y < outHeight; y++) { |
sampler.next(scanline); |
} |
return true; |
+#else |
+ return error_return(*bm, "DGifGetLine"); |
+#endif |
} |
// scanline now contains the raw data. Sample it. |
sampler.next(scanline); |