Title: [235171] trunk/Source/WebCore
Revision
235171
Author
ms2...@igalia.com
Date
2018-08-22 07:47:03 -0700 (Wed, 22 Aug 2018)

Log Message

[GTK] Never return an uninitialized ImageGStreamer object.
https://bugs.webkit.org/show_bug.cgi?id=188305

Reviewed by Philippe Normand.

The single caller was already checking for a null return value, so
make that check actually do something. Also remove the null-check on
the return value of image(), which asserted that it would never return
null.

Test: fast/canvas/canvas-createPattern-video-loading.html

* platform/graphics/gstreamer/ImageGStreamer.h:
(WebCore::ImageGStreamer::createImage): Return null if m_image wasn't created.
(WebCore::ImageGStreamer::image): Return a reference.
(WebCore::ImageGStreamer::rect): Always assert that m_image is present.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint): Update for new signature.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (235170 => 235171)


--- trunk/Source/WebCore/ChangeLog	2018-08-22 14:27:43 UTC (rev 235170)
+++ trunk/Source/WebCore/ChangeLog	2018-08-22 14:47:03 UTC (rev 235171)
@@ -1,3 +1,24 @@
+2018-08-22  Ms2ger  <ms2...@igalia.com>
+
+        [GTK] Never return an uninitialized ImageGStreamer object.
+        https://bugs.webkit.org/show_bug.cgi?id=188305
+
+        Reviewed by Philippe Normand.
+
+        The single caller was already checking for a null return value, so
+        make that check actually do something. Also remove the null-check on
+        the return value of image(), which asserted that it would never return
+        null.
+
+        Test: fast/canvas/canvas-createPattern-video-loading.html
+
+        * platform/graphics/gstreamer/ImageGStreamer.h:
+        (WebCore::ImageGStreamer::createImage): Return null if m_image wasn't created.
+        (WebCore::ImageGStreamer::image): Return a reference.
+        (WebCore::ImageGStreamer::rect): Always assert that m_image is present.
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerBase::paint): Update for new signature.
+
 2018-08-22  Zalan Bujtas  <za...@apple.com>
 
         Add changes missing from r234925.

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/ImageGStreamer.h (235170 => 235171)


--- trunk/Source/WebCore/platform/graphics/gstreamer/ImageGStreamer.h	2018-08-22 14:27:43 UTC (rev 235170)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/ImageGStreamer.h	2018-08-22 14:47:03 UTC (rev 235171)
@@ -38,24 +38,28 @@
 
 class ImageGStreamer : public RefCounted<ImageGStreamer> {
     public:
-        static Ref<ImageGStreamer> createImage(GstSample* sample)
+        static RefPtr<ImageGStreamer> createImage(GstSample* sample)
         {
-            return adoptRef(*new ImageGStreamer(sample));
+            auto image = adoptRef(new ImageGStreamer(sample));
+            if (!image->m_image)
+                return nullptr;
+
+            return image;
         }
         ~ImageGStreamer();
 
-        BitmapImage* image()
+        BitmapImage& image()
         {
             ASSERT(m_image);
-            return m_image.get();
+            return *m_image.get();
         }
 
         void setCropRect(FloatRect rect) { m_cropRect = rect; }
         FloatRect rect()
         {
+            ASSERT(m_image);
             if (!m_cropRect.isEmpty())
                 return FloatRect(m_cropRect);
-            ASSERT(m_image);
             return FloatRect(0, 0, m_image->size().width(), m_image->size().height());
         }
 

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (235170 => 235171)


--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp	2018-08-22 14:27:43 UTC (rev 235170)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp	2018-08-22 14:47:03 UTC (rev 235171)
@@ -966,8 +966,7 @@
     if (!gstImage)
         return;
 
-    if (Image* image = reinterpret_cast<Image*>(gstImage->image()))
-        context.drawImage(*image, rect, gstImage->rect(), paintingOptions);
+    context.drawImage(gstImage->image(), rect, gstImage->rect(), paintingOptions);
 }
 
 #if USE(GSTREAMER_GL)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to