summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-11-04 12:00:17 -0700
committerJohn Reck <jreck@google.com>2010-11-09 11:35:04 -0800
commite14391e94c850b8bd03680c23b38978db68687a8 (patch)
tree3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp
parent1bd705833a68f07850cf7e204b26f8d328d16951 (diff)
downloadexternal_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.cpp11
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) {