Crash when iframe transfers from one page to another and has child frames.
authordimich@chromium.org <dimich@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 30 Nov 2010 03:06:21 +0000 (03:06 +0000)
committerdimich@chromium.org <dimich@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 30 Nov 2010 03:06:21 +0000 (03:06 +0000)
https://bugs.webkit.org/show_bug.cgi?id=50200

Reviewed by David Levin.

* page/Frame.cpp:
(WebCore::Frame::transferChildFrameToNewDocument):
avoid overriding 'didTransfer' which has the result of previous check.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@72863 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/page/Frame.cpp

index 04181bc..46116ec 100644 (file)
@@ -1,3 +1,14 @@
+2010-11-29  Dmitry Titov  <dimich@chromium.org>
+
+        Reviewed by David Levin.
+
+        Crash when iframe transfers from one page to another and has child frames.
+        https://bugs.webkit.org/show_bug.cgi?id=50200
+
+        * page/Frame.cpp:
+        (WebCore::Frame::transferChildFrameToNewDocument):
+        avoid overriding 'didTransfer' which has the result of previous check.
+
 2010-11-19  Ryosuke Niwa  <rniwa@webkit.org>
 
         Reviewed by David Hyatt.
index 5030c72..85523c6 100644 (file)
@@ -734,7 +734,7 @@ void Frame::transferChildFrameToNewDocument()
     }
 
     // Update the frame tree.
-    didTransfer = newParent->tree()->transferChild(this);
+    didTransfer = newParent->tree()->transferChild(this) || didTransfer;
 
     // Avoid unnecessary calls to client and frame subtree if the frame ended
     // up on the same page and under the same parent frame.