Title: [287676] trunk/Source/WebKit
- Revision
- 287676
- Author
- [email protected]
- Date
- 2022-01-06 02:23:42 -0800 (Thu, 06 Jan 2022)
Log Message
ServiceWorkerNavigationPreloader::didComplete should make sure to call its bodyCallback
https://bugs.webkit.org/show_bug.cgi?id=234884
Reviewed by Alex Christensen.
Covered by existing tests.
* NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:
Call to responseCallback may destroy the ServiceWorkerNavigationPreloader.
To make sure to call its bodyCallback, we move it in the stack before calling responseCallback.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (287675 => 287676)
--- trunk/Source/WebKit/ChangeLog 2022-01-06 09:29:55 UTC (rev 287675)
+++ trunk/Source/WebKit/ChangeLog 2022-01-06 10:23:42 UTC (rev 287676)
@@ -1,3 +1,16 @@
+2022-01-06 Youenn Fablet <[email protected]>
+
+ ServiceWorkerNavigationPreloader::didComplete should make sure to call its bodyCallback
+ https://bugs.webkit.org/show_bug.cgi?id=234884
+
+ Reviewed by Alex Christensen.
+
+ Covered by existing tests.
+
+ * NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:
+ Call to responseCallback may destroy the ServiceWorkerNavigationPreloader.
+ To make sure to call its bodyCallback, we move it in the stack before calling responseCallback.
+
2021-10-30 Myles C. Maxfield <[email protected]>
[GPU Process] Small ImageBuffers cause the web process to crash
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp (287675 => 287676)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp 2022-01-06 09:29:55 UTC (rev 287675)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp 2022-01-06 10:23:42 UTC (rev 287676)
@@ -201,11 +201,15 @@
{
m_networkLoad = nullptr;
- if (auto callback = std::exchange(m_responseCallback, { }))
- callback();
+ auto responseCallback = std::exchange(m_responseCallback, { });
+ auto bodyCallback = std::exchange(m_bodyCallback, { });
- if (m_bodyCallback)
- m_bodyCallback({ }, 0);
+ // After calling responseCallback or bodyCallback, |this| might be destroyed.
+ if (responseCallback)
+ responseCallback();
+
+ if (bodyCallback)
+ bodyCallback({ }, 0);
}
void ServiceWorkerNavigationPreloader::waitForResponse(ResponseCallback&& callback)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes