Reviewed by Darin.
authorbdakin@apple.com <bdakin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 Jan 2008 00:43:32 +0000 (00:43 +0000)
committerbdakin@apple.com <bdakin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 Jan 2008 00:43:32 +0000 (00:43 +0000)
        Fix for <rdar://problem/5598609> CrashTracer: [USER] 626 crashes in
        Safari at com.apple.WebCore: WebCore::FrameView::needsFullRepaint
        const + 6

        The real problem here is tracked by rdar://5598072, which is that
        frames can lose sync between their view and their document when a
        non-HTML view is loaded (such as bookmarks view or a PDF). That can
        cause this crash if the layout timer fires before things have fixed
        themselves. This fix turns an ASSERT in FrameView::layout() into an
        early return to cause graceful failure until the root of the
        problem is addressed.

        * page/FrameView.cpp:
        (WebCore::FrameView::layout):

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

WebCore/ChangeLog
WebCore/page/FrameView.cpp

index f344bf6d55d1219749a760c9cc946631ef14dc18..3b1ffffe4c9c473e5abed1b2f7de81a81d0096e8 100644 (file)
@@ -1,3 +1,22 @@
+2008-01-30  Beth Dakin  <bdakin@apple.com>
+
+        Reviewed by Darin.
+
+        Fix for <rdar://problem/5598609> CrashTracer: [USER] 626 crashes in 
+        Safari at com.apple.WebCore: WebCore::FrameView::needsFullRepaint 
+        const + 6
+
+        The real problem here is tracked by rdar://5598072, which is that 
+        frames can lose sync between their view and their document when a 
+        non-HTML view is loaded (such as bookmarks view or a PDF). That can 
+        cause this crash if the layout timer fires before things have fixed 
+        themselves. This fix turns an ASSERT in FrameView::layout() into an 
+        early return to cause graceful failure until the root of the 
+        problem is addressed. 
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout):
+
 2008-01-30  Justin Garcia  <justin.garcia@apple.com>
 
         Reviewed by Darin Adler.
index 87644b3216559b56360f266095d89df799542fdc..0cc65b405eaae8dfed04094f890273b64f9b3917 100644 (file)
@@ -342,6 +342,11 @@ void FrameView::layout(bool allowSubtree)
     }
 
     ASSERT(m_frame->view() == this);
+    // This early return should be removed when rdar://5598072 is resolved. In the meantime, there is a
+    // gigantic CrashTracer because of this issue, and the early return will hopefully cause graceful 
+    // failure instead.  
+    if (m_frame->view() != this)
+        return;
 
     Document* document = m_frame->document();
     if (!document) {