Title: [188531] trunk/Source/WebCore
Revision
188531
Author
[email protected]
Date
2015-08-17 11:52:38 -0700 (Mon, 17 Aug 2015)

Log Message

REGRESSION (r188486): Crash in SubresourceLoader::didReceiveResponse() when TemporaryChange goes out of scope
https://bugs.webkit.org/show_bug.cgi?id=148082

Reviewed by Alexey Proskuryakov.

Covered by existing tests run under ASan or Guard Malloc.

* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveResponse): Ensure that callingDidReceiveResponse is destroyed while the
SubresourceLoader is still alive by declaring it after protect.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (188530 => 188531)


--- trunk/Source/WebCore/ChangeLog	2015-08-17 18:32:49 UTC (rev 188530)
+++ trunk/Source/WebCore/ChangeLog	2015-08-17 18:52:38 UTC (rev 188531)
@@ -1,3 +1,16 @@
+2015-08-17  Andy Estes  <[email protected]>
+
+        REGRESSION (r188486): Crash in SubresourceLoader::didReceiveResponse() when TemporaryChange goes out of scope
+        https://bugs.webkit.org/show_bug.cgi?id=148082
+
+        Reviewed by Alexey Proskuryakov.
+
+        Covered by existing tests run under ASan or Guard Malloc.
+
+        * loader/SubresourceLoader.cpp:
+        (WebCore::SubresourceLoader::didReceiveResponse): Ensure that callingDidReceiveResponse is destroyed while the
+        SubresourceLoader is still alive by declaring it after protect.
+
 2015-08-17  Simon Fraser  <[email protected]>
 
         will-change should sometimes trigger compositing

Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (188530 => 188531)


--- trunk/Source/WebCore/loader/SubresourceLoader.cpp	2015-08-17 18:32:49 UTC (rev 188530)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp	2015-08-17 18:52:38 UTC (rev 188531)
@@ -203,12 +203,12 @@
     ASSERT(!response.isNull());
     ASSERT(m_state == Initialized);
 
-    TemporaryChange<bool> callingDidReceiveResponse(m_callingDidReceiveResponse, true);
-
     // Reference the object in this method since the additional processing can do
     // anything including removing the last reference to this object; one example of this is 3266216.
     Ref<SubresourceLoader> protect(*this);
 
+    TemporaryChange<bool> callingDidReceiveResponse(m_callingDidReceiveResponse, true);
+
     if (shouldIncludeCertificateInfo())
         response.includeCertificateInfo();
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to