Index: tests/GifTest.cpp |
diff --git a/tests/GifTest.cpp b/tests/GifTest.cpp |
index e2e03845cad5f2c9a18f9b9f64c4b0e149b7120d..978e3745394dffe291ee662770e5fa903a531eee 100644 |
--- a/tests/GifTest.cpp |
+++ b/tests/GifTest.cpp |
@@ -5,12 +5,15 @@ |
* found in the LICENSE file. |
*/ |
+#include "SkTypes.h" |
+ |
// This tests out GIF decoder (SkImageDecoder_libgif.cpp) |
// It is not used on these platforms: |
#if (!defined(SK_BUILD_FOR_WIN32)) && \ |
(!defined(SK_BUILD_FOR_IOS)) && \ |
(!defined(SK_BUILD_FOR_MAC)) |
+#include "Resources.h" |
#include "SkBitmap.h" |
#include "SkData.h" |
#include "SkForceLinking.h" |
@@ -197,4 +200,25 @@ DEF_TEST(Gif, reporter) { |
// "libgif warning [interlace DGifGetLine]" |
} |
+// Regression test for decoding a gif image with sampleSize of 4, which was |
+// previously crashing. |
+DEF_TEST(Gif_Sampled, r) { |
+ SkFILEStream fileStream(GetResourcePath("test640x479.gif").c_str()); |
+ REPORTER_ASSERT(r, fileStream.isValid()); |
+ if (!fileStream.isValid()) { |
+ return; |
+ } |
+ |
+ SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(&fileStream)); |
+ REPORTER_ASSERT(r, decoder); |
+ if (!decoder) { |
+ return; |
+ } |
+ decoder->setSampleSize(4); |
+ SkBitmap bm; |
+ const SkImageDecoder::Result result = decoder->decode(&fileStream, &bm, |
+ SkImageDecoder::kDecodePixels_Mode); |
+ REPORTER_ASSERT(r, result == SkImageDecoder::kSuccess); |
+} |
+ |
#endif // !(SK_BUILD_FOR_WIN32||SK_BUILD_FOR_IOS||SK_BUILD_FOR_MAC) |