| Index: src/images/SkImageDecoder_libwebp.cpp
|
| diff --git a/src/images/SkImageDecoder_libwebp.cpp b/src/images/SkImageDecoder_libwebp.cpp
|
| index b0fa7f7053d36d7050dbbd3fd407fa1329bead06..4b5081b436151b294680ba03ee97c932f8c85a69 100644
|
| --- a/src/images/SkImageDecoder_libwebp.cpp
|
| +++ b/src/images/SkImageDecoder_libwebp.cpp
|
| @@ -203,31 +203,27 @@ static bool webp_idecode(SkStream* stream, WebPDecoderConfig* config) {
|
| return false;
|
| }
|
|
|
| - uint32_t bytesRemaining = contentSize;
|
| - while (bytesRemaining > 0) {
|
| - const uint32_t bytesToRead = (bytesRemaining < WEBP_IDECODE_BUFFER_SZ) ?
|
| - bytesRemaining : WEBP_IDECODE_BUFFER_SZ;
|
| + bool success = true;
|
| + VP8StatusCode status = VP8_STATUS_SUSPENDED;
|
| + do {
|
| + const uint32_t bytesToRead = WEBP_IDECODE_BUFFER_SZ;
|
| const size_t bytesRead = stream->read(input, bytesToRead);
|
| if (0 == bytesRead) {
|
| + success = false;
|
| break;
|
| }
|
|
|
| - VP8StatusCode status = WebPIAppend(idec, input, bytesRead);
|
| - if (VP8_STATUS_OK == status || VP8_STATUS_SUSPENDED == status) {
|
| - bytesRemaining -= bytesRead;
|
| - } else {
|
| + status = WebPIAppend(idec, input, bytesRead);
|
| + if (VP8_STATUS_OK != status && VP8_STATUS_SUSPENDED != status) {
|
| + success = false;
|
| break;
|
| }
|
| - }
|
| + } while (VP8_STATUS_OK != status);
|
| srcStorage.free();
|
| WebPIDelete(idec);
|
| WebPFreeDecBuffer(&config->output);
|
|
|
| - if (bytesRemaining > 0) {
|
| - return false;
|
| - } else {
|
| - return true;
|
| - }
|
| + return success;
|
| }
|
|
|
| static bool webp_get_config_resize(WebPDecoderConfig* config,
|
|
|