diff options
Diffstat (limited to 'tests/SerializationTest.cpp')
-rw-r--r-- | tests/SerializationTest.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp index 7ae06d737e..f1d0f900fd 100644 --- a/tests/SerializationTest.cpp +++ b/tests/SerializationTest.cpp @@ -148,6 +148,7 @@ static T* TestFlattenableSerialization(T* testObj, bool shouldSucceed, REPORTER_ASSERT(reporter, SkAlign4(bytesWritten) == bytesWritten); unsigned char dataWritten[1024]; + SkASSERT(bytesWritten <= sizeof(dataWritten)); writer.writeToMemory(dataWritten); // Make sure this fails when it should (test with smaller size, but still multiple of 4) @@ -307,10 +308,22 @@ static void Tests(skiatest::Reporter* reporter) { TestBitmapSerialization(validBitmap, invalidBitmap, true, reporter); // Create a bitmap with a pixel ref too small + SkImageInfo info; + info.fWidth = 256; + info.fHeight = 256; + info.fColorType = kPMColor_SkColorType; + info.fAlphaType = kPremul_SkAlphaType; + SkBitmap invalidBitmap2; - invalidBitmap2.setConfig(SkBitmap::kARGB_8888_Config, 256, 256); - invalidBitmap2.setPixelRef(SkNEW_ARGS(SkMallocPixelRef, - (NULL, 256, NULL)))->unref(); + invalidBitmap2.setConfig(info); + + // Hack to force invalid, by making the pixelref smaller than its + // owning bitmap. + info.fWidth = 32; + info.fHeight = 1; + + invalidBitmap2.setPixelRef(SkMallocPixelRef::NewAllocate( + info, invalidBitmap2.rowBytes(), NULL))->unref(); // The deserialization should detect the pixel ref being too small and fail TestBitmapSerialization(validBitmap, invalidBitmap2, false, reporter); |