Title: [241970] trunk/Source/WebCore
Revision
241970
Author
[email protected]
Date
2019-02-22 16:41:58 -0800 (Fri, 22 Feb 2019)

Log Message

[iOS] Break a reference cycle between PreviewLoader and ResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=194964
<rdar://problem/48279441>

Reviewed by Alex Christensen.

When a document's QuickLook preview is loaded, a reference cycle is created between
PreviewLoader and ResourceLoader. Break the cycle by clearing m_previewLoader in
ResourceLoader::releaseResources().

Fixes leaks detected by `run-webkit-tests --leaks LayoutTests/quicklook`.

* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::releaseResources):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (241969 => 241970)


--- trunk/Source/WebCore/ChangeLog	2019-02-23 00:13:49 UTC (rev 241969)
+++ trunk/Source/WebCore/ChangeLog	2019-02-23 00:41:58 UTC (rev 241970)
@@ -1,3 +1,20 @@
+2019-02-22  Andy Estes  <[email protected]>
+
+        [iOS] Break a reference cycle between PreviewLoader and ResourceLoader
+        https://bugs.webkit.org/show_bug.cgi?id=194964
+        <rdar://problem/48279441>
+
+        Reviewed by Alex Christensen.
+
+        When a document's QuickLook preview is loaded, a reference cycle is created between
+        PreviewLoader and ResourceLoader. Break the cycle by clearing m_previewLoader in
+        ResourceLoader::releaseResources().
+
+        Fixes leaks detected by `run-webkit-tests --leaks LayoutTests/quicklook`.
+
+        * loader/ResourceLoader.cpp:
+        (WebCore::ResourceLoader::releaseResources):
+
 2019-02-22  Sihui Liu  <[email protected]>
 
         Crash under IDBServer::IDBConnectionToClient::identifier() const

Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (241969 => 241970)


--- trunk/Source/WebCore/loader/ResourceLoader.cpp	2019-02-23 00:13:49 UTC (rev 241969)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp	2019-02-23 00:41:58 UTC (rev 241970)
@@ -113,6 +113,10 @@
 
     m_resourceData = nullptr;
     m_deferredRequest = ResourceRequest();
+
+#if USE(QUICK_LOOK)
+    m_previewLoader = nullptr;
+#endif
 }
 
 void ResourceLoader::init(ResourceRequest&& clientRequest, CompletionHandler<void(bool)>&& completionHandler)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to