diff options
Diffstat (limited to 'WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp')
-rw-r--r-- | WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp b/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp index 4d2a92d..4797495 100644 --- a/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp +++ b/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp @@ -60,7 +60,7 @@ bool GIFImageDecoder::isSizeAvailable() return ImageDecoder::isSizeAvailable(); } -bool GIFImageDecoder::setSize(unsigned width, unsigned height) +bool GIFImageDecoder::setSize(int width, int height) { if (ImageDecoder::isSizeAvailable() && size().width() == width && size().height() == height) return true; @@ -356,7 +356,8 @@ bool GIFImageDecoder::initFrameBuffer(unsigned frameIndex) if ((prevMethod == RGBA32Buffer::DisposeNotSpecified) || (prevMethod == RGBA32Buffer::DisposeKeep)) { // Preserve the last frame as the starting state for this frame. - buffer->copyBitmapData(*prevBuffer); + if (!buffer->copyBitmapData(*prevBuffer)) + return setFailed(); } else { // We want to clear the previous frame to transparent, without // affecting pixels in the image outside of the frame. @@ -369,7 +370,8 @@ bool GIFImageDecoder::initFrameBuffer(unsigned frameIndex) return setFailed(); } else { // Copy the whole previous buffer, then clear just its frame. - buffer->copyBitmapData(*prevBuffer); + if (!buffer->copyBitmapData(*prevBuffer)) + return setFailed(); for (int y = prevRect.y(); y < prevRect.bottom(); ++y) { for (int x = prevRect.x(); x < prevRect.right(); ++x) buffer->setRGBA(x, y, 0, 0, 0, 0); |