diff options
author | John Reck <jreck@google.com> | 2010-11-04 12:00:17 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2010-11-09 11:35:04 -0800 |
commit | e14391e94c850b8bd03680c23b38978db68687a8 (patch) | |
tree | 3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp | |
parent | 1bd705833a68f07850cf7e204b26f8d328d16951 (diff) | |
download | external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.zip external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.gz external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.bz2 |
Merge Webkit at r70949: Initial merge by git.
Change-Id: I77b8645c083b5d0da8dba73ed01d4014aab9848e
Diffstat (limited to 'WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp')
-rw-r--r-- | WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp b/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp index 5794fd6..2275fc7 100644 --- a/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp +++ b/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp @@ -86,14 +86,15 @@ bool WEBPImageDecoder::decode(bool onlySize) return true; if (!WebPGetInfo(dataBytes, dataSize, &width, &height)) return setFailed(); + if (!ImageDecoder::isSizeAvailable() && !setSize(width, height)) + return setFailed(); if (onlySize) - return setSize(width, height) || setFailed(); + return true; // FIXME: Add support for progressive decoding. if (!isAllDataReceived()) return true; - if (m_frameBufferCache.isEmpty()) - return true; + ASSERT(!m_frameBufferCache.isEmpty()); RGBA32Buffer& buffer = m_frameBufferCache[0]; if (buffer.status() == RGBA32Buffer::FrameEmpty) { ASSERT(width == size().width()); @@ -103,8 +104,8 @@ bool WEBPImageDecoder::decode(bool onlySize) } const int stride = width * bytesPerPixel; Vector<uint8_t> rgb; - rgb.reserveCapacity(height * stride); - if (!WebPDecodeBGRInto(dataBytes, dataSize, &rgb[0], height * stride, stride)) + rgb.resize(height * stride); + if (!WebPDecodeBGRInto(dataBytes, dataSize, rgb.data(), rgb.size(), stride)) return setFailed(); // FIXME: remove this data copy. for (int y = 0; y < height; ++y) { |