Title: [152228] trunk/Source/WebCore
- Revision
- 152228
- Author
- [email protected]
- Date
- 2013-07-01 09:38:05 -0700 (Mon, 01 Jul 2013)
Log Message
[Win] Crash when scrolling page with images.
https://bugs.webkit.org/show_bug.cgi?id=117832
Patch by [email protected] <[email protected]> on 2013-07-01
Reviewed by Brent Fulgham.
Avoid access violation by returning early from method if image frame doesn't have pixel data.
* platform/image-decoders/ImageDecoder.h:
(WebCore::ImageFrame::hasPixelData): Added method to check if frame has pixel data.
* platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::haveDecodedRow): Early return if frame doesn't have pixel data.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (152227 => 152228)
--- trunk/Source/WebCore/ChangeLog 2013-07-01 16:32:07 UTC (rev 152227)
+++ trunk/Source/WebCore/ChangeLog 2013-07-01 16:38:05 UTC (rev 152228)
@@ -1,3 +1,17 @@
+2013-07-01 [email protected] <[email protected]>
+
+ [Win] Crash when scrolling page with images.
+ https://bugs.webkit.org/show_bug.cgi?id=117832
+
+ Reviewed by Brent Fulgham.
+
+ Avoid access violation by returning early from method if image frame doesn't have pixel data.
+
+ * platform/image-decoders/ImageDecoder.h:
+ (WebCore::ImageFrame::hasPixelData): Added method to check if frame has pixel data.
+ * platform/image-decoders/gif/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoder::haveDecodedRow): Early return if frame doesn't have pixel data.
+
2013-07-01 Noam Rosenthal <[email protected]>
Avoid calling RenderLayerBacking::resetContentsRect() if possible
Modified: trunk/Source/WebCore/platform/image-decoders/ImageDecoder.h (152227 => 152228)
--- trunk/Source/WebCore/platform/image-decoders/ImageDecoder.h 2013-07-01 16:32:07 UTC (rev 152227)
+++ trunk/Source/WebCore/platform/image-decoders/ImageDecoder.h 2013-07-01 16:38:05 UTC (rev 152228)
@@ -133,6 +133,11 @@
return m_bytes + (y * width()) + x;
}
+ inline bool hasPixelData() const
+ {
+ return m_bytes;
+ }
+
// Use fix point multiplier instead of integer division or floating point math.
// This multipler produces exactly the same result for all values in range 0 - 255.
static const unsigned fixPointShift = 24;
Modified: trunk/Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp (152227 => 152228)
--- trunk/Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp 2013-07-01 16:32:07 UTC (rev 152227)
+++ trunk/Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp 2013-07-01 16:38:05 UTC (rev 152228)
@@ -227,7 +227,7 @@
// Initialize the frame if necessary.
ImageFrame& buffer = m_frameBufferCache[frameIndex];
- if ((buffer.status() == ImageFrame::FrameEmpty) && !initFrameBuffer(frameIndex))
+ if (((buffer.status() == ImageFrame::FrameEmpty) && !initFrameBuffer(frameIndex)) || !buffer.hasPixelData())
return false;
ImageFrame::PixelData* currentAddress = buffer.getAddr(xBegin, yBegin);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes