Title: [108465] trunk/Source/WebCore
Revision
108465
Author
aba...@webkit.org
Date
2012-02-22 01:45:55 -0800 (Wed, 22 Feb 2012)

Log Message

[GTK] fast/frames/frame-dead-region.html crash
https://bugs.webkit.org/show_bug.cgi?id=79205

Unreviewed.

Apparently we're not supposed to call willDetachPage from
CachedFrame::destroy.  This call got added in
http://trac.webkit.org/changeset/108428, but it seems to cause a crash.


* loader/FrameLoader.cpp:
(WebCore::FrameLoader::closeAndRemoveChild):
(WebCore::FrameLoader::detachFromParent):
* page/Frame.h:
(WebCore::Frame::detachFromPage):
* page/Page.cpp:
(WebCore::Page::~Page):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (108464 => 108465)


--- trunk/Source/WebCore/ChangeLog	2012-02-22 09:40:27 UTC (rev 108464)
+++ trunk/Source/WebCore/ChangeLog	2012-02-22 09:45:55 UTC (rev 108465)
@@ -1,5 +1,24 @@
 2012-02-22  Adam Barth  <aba...@webkit.org>
 
+        [GTK] fast/frames/frame-dead-region.html crash
+        https://bugs.webkit.org/show_bug.cgi?id=79205
+
+        Unreviewed.
+
+        Apparently we're not supposed to call willDetachPage from
+        CachedFrame::destroy.  This call got added in
+        http://trac.webkit.org/changeset/108428, but it seems to cause a crash.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::closeAndRemoveChild):
+        (WebCore::FrameLoader::detachFromParent):
+        * page/Frame.h:
+        (WebCore::Frame::detachFromPage):
+        * page/Page.cpp:
+        (WebCore::Page::~Page):
+
+2012-02-22  Adam Barth  <aba...@webkit.org>
+
         Move Geolocation code into Modules/geolocation
         https://bugs.webkit.org/show_bug.cgi?id=79204
 

Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (108464 => 108465)


--- trunk/Source/WebCore/loader/FrameLoader.cpp	2012-02-22 09:40:27 UTC (rev 108464)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp	2012-02-22 09:45:55 UTC (rev 108465)
@@ -2439,6 +2439,7 @@
     child->setView(0);
     if (child->ownerElement() && child->page())
         child->page()->decrementFrameCount();
+    child->willDetachPage();
     child->detachFromPage();
 
     m_frame->tree()->removeChild(child);
@@ -2517,6 +2518,7 @@
         parent->loader()->scheduleCheckCompleted();
     } else {
         m_frame->setView(0);
+        m_frame->willDetachPage();
         m_frame->detachFromPage();
     }
 }

Modified: trunk/Source/WebCore/page/Frame.h (108464 => 108465)


--- trunk/Source/WebCore/page/Frame.h	2012-02-22 09:40:27 UTC (rev 108464)
+++ trunk/Source/WebCore/page/Frame.h	2012-02-22 09:45:55 UTC (rev 108465)
@@ -348,7 +348,6 @@
 
     inline void Frame::detachFromPage()
     {
-        willDetachPage();
         m_page = 0;
     }
 

Modified: trunk/Source/WebCore/page/Page.cpp (108464 => 108465)


--- trunk/Source/WebCore/page/Page.cpp	2012-02-22 09:40:27 UTC (rev 108464)
+++ trunk/Source/WebCore/page/Page.cpp	2012-02-22 09:45:55 UTC (rev 108465)
@@ -187,8 +187,10 @@
     setGroupName(String());
     allPages->remove(this);
     
-    for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext())
+    for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext()) {
+        frame->willDetachPage();
         frame->detachFromPage();
+    }
 
     m_editorClient->pageDestroyed();
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to