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

Reply via email to