Chromium Code Reviews| Index: third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| diff --git a/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| index 2672862d85e13b5b65612075ffccf1ef424f6463..fae908a78e567ec303b4b967a767735cffe0861c 100644 |
| --- a/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| +++ b/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.cpp |
| @@ -144,6 +144,7 @@ void WEBPImageDecoder::clear() |
| { |
| WebPDemuxDelete(m_demux); |
| m_demux = 0; |
| + m_consolidatedData.clear(); |
| clearDecoder(); |
| } |
| @@ -155,7 +156,7 @@ void WEBPImageDecoder::clearDecoder() |
| m_frameBackgroundHasAlpha = false; |
| } |
| -void WEBPImageDecoder::onSetData(SharedBuffer*) |
| +void WEBPImageDecoder::onSetData(SegmentReader*) |
| { |
| m_haveAlreadyParsedThisData = false; |
| } |
| @@ -195,10 +196,14 @@ bool WEBPImageDecoder::updateDemuxer() |
| return false; // Await VP8X header so WebPDemuxPartial succeeds. |
| WebPDemuxDelete(m_demux); |
| - WebPData inputData = { reinterpret_cast<const uint8_t*>(m_data->data()), m_data->size() }; |
| + m_consolidatedData = m_data->getAsSkData(); |
|
urvang
2016/03/28 21:29:32
You need to clear existing data in m_consolidatedD
scroggo_chromium
2016/04/04 13:59:47
m_demux is a raw pointer, so we definitely need to
|
| + WebPData inputData = { reinterpret_cast<const uint8_t*>(m_consolidatedData->data()), m_consolidatedData->size() }; |
| m_demux = WebPDemuxPartial(&inputData, &m_demuxState); |
| - if (!m_demux || (isAllDataReceived() && m_demuxState != WEBP_DEMUX_DONE)) |
| + if (!m_demux || (isAllDataReceived() && m_demuxState != WEBP_DEMUX_DONE)) { |
| + if (!m_demux) |
| + m_consolidatedData.clear(); |
|
urvang
2016/03/28 21:29:32
Why this special clear() call? Wouldn't this autom
scroggo_chromium
2016/04/04 13:59:47
This was to tie the lifetime of m_consolidatedData
|
| return setFailed(); |
| + } |
| ASSERT(m_demuxState > WEBP_DEMUX_PARSING_HEADER); |
| if (!WebPDemuxGetI(m_demux, WEBP_FF_FRAME_COUNT)) |