| Index: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageReader.cpp
|
| diff --git a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageReader.cpp b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageReader.cpp
|
| index 4c6631dfe2b4ea139902f443fdf716cde83a9c68..103d6d376dcc7297be31099765f560611429fa8a 100644
|
| --- a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageReader.cpp
|
| +++ b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageReader.cpp
|
| @@ -387,7 +387,15 @@ bool GIFImageReader::decode(size_t frameIndex)
|
|
|
| bool GIFImageReader::parse(GIFImageDecoder::GIFParseQuery query)
|
| {
|
| - ASSERT(m_bytesRead <= m_data->size());
|
| + if (m_bytesRead >= m_data->size()) {
|
| + // This data has already been parsed. For example, in deferred
|
| + // decoding, a DecodingImageGenerator with more data may have already
|
| + // used this same ImageDecoder to decode. This can happen if two
|
| + // SkImages created by a DeferredImageDecoder are drawn/prerolled
|
| + // out of order (with respect to how much data they had at creation
|
| + // time).
|
| + return !m_client->failed();
|
| + }
|
|
|
| return parseData(m_bytesRead, m_data->size() - m_bytesRead, query);
|
| }
|
|
|