Title: [147573] branches/chromium/1453/Source/WebCore/platform/image-decoders/gif
Revision
147573
Author
[email protected]
Date
2013-04-03 12:08:42 -0700 (Wed, 03 Apr 2013)

Log Message

Merge 147392 "Simply GIFImageReader error handling"

> Simply GIFImageReader error handling
> https://bugs.webkit.org/show_bug.cgi?id=113718
> 
> Reviewed by Adam Barth.
> 
> When GIFImageReader encounters a parsing error it should just return
> without doing any more work. Current code saves a boolean before return,
> this is not necessary.
> 
> Tested with existing unit tests.
> Tested locally with ASAN build with 60k GIF images.
> 
> * platform/image-decoders/gif/GIFImageDecoder.cpp:
> (WebCore::GIFImageDecoder::repetitionCount):
> * platform/image-decoders/gif/GIFImageReader.cpp:
> (GIFImageReader::decode):
> * platform/image-decoders/gif/GIFImageReader.h:
> (GIFImageReader::GIFImageReader):
> (GIFImageReader):
> 

[email protected]
Review URL: https://codereview.chromium.org/13578002

Modified Paths

Diff

Modified: branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp (147572 => 147573)


--- branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp	2013-04-03 18:58:15 UTC (rev 147572)
+++ branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp	2013-04-03 19:08:42 UTC (rev 147573)
@@ -106,7 +106,7 @@
     // see the loop count and then encounter a decoding error which happens
     // later in the stream. It is also possible that no frames are in the
     // stream. In these cases we should just loop once.
-    if (failed() || (m_reader && (!m_reader->imagesCount() || m_reader->parseFailed())))
+    if (failed() || (m_reader && (!m_reader->imagesCount())))
         m_repetitionCount = cAnimationLoopOnce;
     else if (m_reader && m_reader->loopCount() != cLoopCountNotSeen)
         m_repetitionCount = m_reader->loopCount();

Modified: branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp (147572 => 147573)


--- branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp	2013-04-03 18:58:15 UTC (rev 147572)
+++ branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp	2013-04-03 19:08:42 UTC (rev 147573)
@@ -358,10 +358,8 @@
 {
     ASSERT(m_bytesRead <= m_data->size());
 
-    if (!m_parseFailed && !parse(m_bytesRead, m_data->size() - m_bytesRead, query == GIFImageDecoder::GIFSizeQuery)) {
-        m_parseFailed = true;
+    if (!parse(m_bytesRead, m_data->size() - m_bytesRead, query == GIFImageDecoder::GIFSizeQuery))
         return false;
-    }
 
     if (query != GIFImageDecoder::GIFFullQuery)
         return true;

Modified: branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageReader.h (147572 => 147573)


--- branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageReader.h	2013-04-03 18:58:15 UTC (rev 147572)
+++ branches/chromium/1453/Source/WebCore/platform/image-decoders/gif/GIFImageReader.h	2013-04-03 19:08:42 UTC (rev 147573)
@@ -240,7 +240,6 @@
         , m_globalColormapSize(0)
         , m_loopCount(cLoopCountNotSeen)
         , m_currentDecodingFrame(0)
-        , m_parseFailed(false)
         , m_parseCompleted(false)
     {
     }
@@ -288,8 +287,6 @@
         return m_currentDecodingFrame < m_frames.size() ? m_frames[m_currentDecodingFrame].get() : 0;
     }
 
-    bool parseFailed() const { return m_parseFailed; }
-
 private:
     bool parse(size_t dataPosition, size_t len, bool parseSizeOnly);
     void setRemainingBytes(size_t);
@@ -326,7 +323,6 @@
     size_t m_currentDecodingFrame;
 
     RefPtr<WebCore::SharedBuffer> m_data;
-    bool m_parseFailed;
     bool m_parseCompleted;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to