Title: [169964] trunk/Source/WebKit2
Revision
169964
Author
[email protected]
Date
2014-06-13 23:31:11 -0700 (Fri, 13 Jun 2014)

Log Message

REGRESSION (r167635): Reference leak in NetworkResourceLoader while loads are being deferred.
<https://webkit.org/b/133894>
<rdar://problem/17312299>

Don't self-ref() in start() until we actually start; if page loads are being
deferred, start() will be called again once deferral stops.

This was causing us to leak the entire NetworkResourceLoader object graph.

Reviewed by Brady Eidson.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (169963 => 169964)


--- trunk/Source/WebKit2/ChangeLog	2014-06-14 06:18:47 UTC (rev 169963)
+++ trunk/Source/WebKit2/ChangeLog	2014-06-14 06:31:11 UTC (rev 169964)
@@ -1,3 +1,19 @@
+2014-06-13  Andreas Kling  <[email protected]>
+
+        REGRESSION (r167635): Reference leak in NetworkResourceLoader while loads are being deferred.
+        <https://webkit.org/b/133894>
+        <rdar://problem/17312299>
+
+        Don't self-ref() in start() until we actually start; if page loads are being
+        deferred, start() will be called again once deferral stops.
+
+        This was causing us to leak the entire NetworkResourceLoader object graph.
+
+        Reviewed by Brady Eidson.
+
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::start):
+
 2014-06-13  Dan Bernstein  <[email protected]>
 
         Make GenericCallback variadic

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (169963 => 169964)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2014-06-14 06:18:47 UTC (rev 169963)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2014-06-14 06:31:11 UTC (rev 169964)
@@ -121,17 +121,17 @@
 {
     ASSERT(RunLoop::isMain());
 
+    if (m_defersLoading) {
+        m_deferredRequest = m_request;
+        return;
+    }
+
     // Explicit ref() balanced by a deref() in NetworkResourceLoader::cleanup()
     ref();
 
     // FIXME (NetworkProcess): Set platform specific settings.
     m_networkingContext = RemoteNetworkingContext::create(m_sessionID, m_shouldClearReferrerOnHTTPSToHTTPRedirect);
 
-    if (m_defersLoading) {
-        m_deferredRequest = m_request;
-        return;
-    }
-
     consumeSandboxExtensions();
 
     // FIXME (NetworkProcess): Pass an actual value for defersLoading
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to