Title: [212644] trunk/Source
Revision
212644
Author
commit-qu...@webkit.org
Date
2017-02-20 09:24:12 -0800 (Mon, 20 Feb 2017)

Log Message

[WebRTC] Fix some memory leaks in libwebrtc binding code
https://bugs.webkit.org/show_bug.cgi?id=168596

Patch by Youenn Fablet <you...@apple.com> on 2017-02-20
Reviewed by Eric Carlson.

Source/WebCore:

Covered by manual testing.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector): Using the libwebrtc way of creating such objects.
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::create):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::PeerConnectionFactoryAndThreads::OnMessage):

Source/WebKit2:

* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::OnMessage):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (212643 => 212644)


--- trunk/Source/WebCore/ChangeLog	2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/ChangeLog	2017-02-20 17:24:12 UTC (rev 212644)
@@ -1,3 +1,19 @@
+2017-02-20  Youenn Fablet  <you...@apple.com>
+
+        [WebRTC] Fix some memory leaks in libwebrtc binding code
+        https://bugs.webkit.org/show_bug.cgi?id=168596
+
+        Reviewed by Eric Carlson.
+
+        Covered by manual testing.
+
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector): Using the libwebrtc way of creating such objects.
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+        (WebCore::LibWebRTCMediaEndpoint::StatsCollector::create):
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
+        (WebCore::PeerConnectionFactoryAndThreads::OnMessage):
+
 2017-02-20  Alexey Proskuryakov  <a...@apple.com>
 
         Clean up how WebKit exports _WebCreateFragment

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (212643 => 212644)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2017-02-20 17:24:12 UTC (rev 212644)
@@ -219,8 +219,8 @@
     m_backend->GetStats(StatsCollector::create(*this, promise, track).get());
 }
 
-LibWebRTCMediaEndpoint::StatsCollector::StatsCollector(LibWebRTCMediaEndpoint& endpoint, const DeferredPromise& promise, MediaStreamTrack* track)
-    : m_endpoint(endpoint)
+LibWebRTCMediaEndpoint::StatsCollector::StatsCollector(Ref<LibWebRTCMediaEndpoint>&& endpoint, const DeferredPromise& promise, MediaStreamTrack* track)
+    : m_endpoint(WTFMove(endpoint))
     , m_promise(promise)
 {
     if (track)

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h (212643 => 212644)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h	2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h	2017-02-20 17:24:12 UTC (rev 212644)
@@ -143,19 +143,16 @@
         LibWebRTCMediaEndpoint& m_endpoint;
     };
 
-    class StatsCollector final : public webrtc::RTCStatsCollectorCallback {
+    class StatsCollector : public webrtc::RTCStatsCollectorCallback {
     public:
-        static rtc::scoped_refptr<StatsCollector> create(LibWebRTCMediaEndpoint& endpoint, const DeferredPromise& promise, MediaStreamTrack* track) { return new StatsCollector(endpoint, promise, track); }
+        static rtc::scoped_refptr<StatsCollector> create(Ref<LibWebRTCMediaEndpoint>&& endpoint, const DeferredPromise& promise, MediaStreamTrack* track) { return new rtc::RefCountedObject<StatsCollector>(WTFMove(endpoint), promise, track); }
 
-        int AddRef() const { return m_endpoint.AddRef(); }
-        int Release() const { return m_endpoint.Release(); }
+        StatsCollector(Ref<LibWebRTCMediaEndpoint>&&, const DeferredPromise&, MediaStreamTrack*);
 
     private:
-        StatsCollector(LibWebRTCMediaEndpoint&, const DeferredPromise&, MediaStreamTrack*);
-
         void OnStatsDelivered(const rtc::scoped_refptr<const webrtc::RTCStatsReport>&) final;
 
-        LibWebRTCMediaEndpoint& m_endpoint;
+        Ref<LibWebRTCMediaEndpoint> m_endpoint;
         const DeferredPromise& m_promise;
         String m_id;
     };

Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp (212643 => 212644)


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp	2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp	2017-02-20 17:24:12 UTC (rev 212644)
@@ -65,7 +65,9 @@
 void PeerConnectionFactoryAndThreads::OnMessage(rtc::Message* message)
 {
     ASSERT(message->message_id == 1);
-    static_cast<ThreadMessageData*>(message->pdata)->callback();
+    auto* data = ""
+    data->callback();
+    delete data;
 }
 
 void LibWebRTCProvider::callOnWebRTCNetworkThread(Function<void()>&& callback)

Modified: trunk/Source/WebKit2/ChangeLog (212643 => 212644)


--- trunk/Source/WebKit2/ChangeLog	2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebKit2/ChangeLog	2017-02-20 17:24:12 UTC (rev 212644)
@@ -1,3 +1,13 @@
+2017-02-20  Youenn Fablet  <you...@apple.com>
+
+        [WebRTC] Fix some memory leaks in libwebrtc binding code
+        https://bugs.webkit.org/show_bug.cgi?id=168596
+
+        Reviewed by Eric Carlson.
+
+        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
+        (WebKit::NetworkRTCProvider::OnMessage):
+
 2017-02-20  Carlos Garcia Campos  <cgar...@igalia.com>
 
         Remove code under USE(GRAPHICS_SURFACE)

Modified: trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp (212643 => 212644)


--- trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp	2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp	2017-02-20 17:24:12 UTC (rev 212644)
@@ -173,7 +173,9 @@
 void NetworkRTCProvider::OnMessage(rtc::Message* message)
 {
     ASSERT(message->message_id == 1);
-    static_cast<NetworkMessageData*>(message->pdata)->callback();
+    auto* data = ""
+    data->callback();
+    delete data;
 }
 
 void NetworkRTCProvider::callOnRTCNetworkThread(Function<void()>&& callback)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to