WebCore:
authorddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 24 Mar 2007 22:13:04 +0000 (22:13 +0000)
committerddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 24 Mar 2007 22:13:04 +0000 (22:13 +0000)
        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=13180
              <rdar://problem/5084478>
          Another debug build crash from ASSERTION FAILED: !needsLayout()

        No test possible because updateRendering() is always called after script
        execution.

        * page/FrameView.cpp:
        (WebCore::FrameView::layout): Get the layout root after calling recalcStyle()
        since a style recalc may result in needing to do start layout at the root.

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

WebCore/ChangeLog
WebCore/page/FrameView.cpp

index 3c399a6fd832a7e9cbdc37254306d87cdbef7716..4de7e143d157c03d87ec894d7b2430248acf8425 100644 (file)
@@ -1,3 +1,18 @@
+2007-03-24  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Adele.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=13180
+              <rdar://problem/5084478>
+          Another debug build crash from ASSERTION FAILED: !needsLayout()
+
+        No test possible because updateRendering() is always called after script
+        execution.
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout): Get the layout root after calling recalcStyle()
+        since a style recalc may result in needing to do start layout at the root.
+
 2007-03-24  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Not reviewed. Build fix.
index 8ea8da5bd8b8adbb8d920b0a9970a63221e73d87..c708a8c07f5b095012fd6ce09188f7407a1efc06 100644 (file)
@@ -303,7 +303,6 @@ void FrameView::layout(bool allowSubtree)
         d->layoutRoot = 0;
     }
 
-    bool subtree = d->layoutRoot;
 
     ASSERT(m_frame->view() == this);
 
@@ -314,7 +313,6 @@ void FrameView::layout(bool allowSubtree)
         return;
     }
 
-    Node* rootNode = subtree ? d->layoutRoot.get() : document;
     d->layoutSchedulingEnabled = false;
 
     // Always ensure our style info is up-to-date.  This can happen in situations where
@@ -322,6 +320,9 @@ void FrameView::layout(bool allowSubtree)
     if (document->hasChangedChild())
         document->recalcStyle();
     
+    bool subtree = d->layoutRoot;
+    Node* rootNode = subtree ? d->layoutRoot.get() : document;
+
     // If there is only one ref to this view left, then its going to be destroyed as soon as we exit, 
     // so there's no point to continuiing to layout
     if (protector->hasOneRef())