| Index: tests/PDFDeflateWStreamTest.cpp
|
| diff --git a/tests/PDFDeflateWStreamTest.cpp b/tests/PDFDeflateWStreamTest.cpp
|
| index f4d8dd3730e40955bb86e03a344ac7323987bd28..91c8c3fffe3b0142c1e3ca5ac9f0dca9ae345715 100644
|
| --- a/tests/PDFDeflateWStreamTest.cpp
|
| +++ b/tests/PDFDeflateWStreamTest.cpp
|
| @@ -29,7 +29,7 @@ void skia_free_func(void*, void* address) { sk_free(address); }
|
| * Use the un-deflate compression algorithm to decompress the data in src,
|
| * returning the result. Returns nullptr if an error occurs.
|
| */
|
| -SkStreamAsset* stream_inflate(SkStream* src) {
|
| +SkStreamAsset* stream_inflate(skiatest::Reporter* reporter, SkStream* src) {
|
| SkDynamicMemoryWStream decompressedDynamicMemoryWStream;
|
| SkWStream* dst = &decompressedDynamicMemoryWStream;
|
|
|
| @@ -46,9 +46,10 @@ SkStreamAsset* stream_inflate(SkStream* src) {
|
| flateData.avail_out = kBufferSize;
|
| int rc;
|
| rc = inflateInit(&flateData);
|
| - if (rc != Z_OK)
|
| + if (rc != Z_OK) {
|
| + ERRORF(reporter, "Zlib: inflateInit failed");
|
| return nullptr;
|
| -
|
| + }
|
| uint8_t* input = (uint8_t*)src->getMemoryBase();
|
| size_t inputLength = src->getLength();
|
| if (input == nullptr || inputLength == 0) {
|
| @@ -86,8 +87,10 @@ SkStreamAsset* stream_inflate(SkStream* src) {
|
| while (rc == Z_OK) {
|
| rc = inflate(&flateData, Z_FINISH);
|
| if (flateData.avail_out < kBufferSize) {
|
| - if (!dst->write(outputBuffer, kBufferSize - flateData.avail_out))
|
| + if (!dst->write(outputBuffer, kBufferSize - flateData.avail_out)) {
|
| + ERRORF(reporter, "write failed");
|
| return nullptr;
|
| + }
|
| flateData.next_out = outputBuffer;
|
| flateData.avail_out = kBufferSize;
|
| }
|
| @@ -95,6 +98,7 @@ SkStreamAsset* stream_inflate(SkStream* src) {
|
|
|
| inflateEnd(&flateData);
|
| if (rc != Z_STREAM_END) {
|
| + ERRORF(reporter, "Zlib: inflateEnd failed");
|
| return nullptr;
|
| }
|
| return decompressedDynamicMemoryWStream.detachAsStream();
|
| @@ -126,8 +130,12 @@ DEF_TEST(SkDeflateWStream, r) {
|
| }
|
| SkAutoTDelete<SkStreamAsset> compressed(
|
| dynamicMemoryWStream.detachAsStream());
|
| - SkAutoTDelete<SkStreamAsset> decompressed(stream_inflate(compressed));
|
| + SkAutoTDelete<SkStreamAsset> decompressed(stream_inflate(r, compressed));
|
|
|
| + if (!decompressed) {
|
| + ERRORF(r, "Decompression failed.");
|
| + return;
|
| + }
|
| if (decompressed->getLength() != size) {
|
| ERRORF(r, "Decompression failed to get right size [%d]."
|
| " %u != %u", i, (unsigned)(decompressed->getLength()),
|
|
|