2006-04-28 Eric Seidel <eseidel@apple.com>
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Apr 2006 22:03:18 +0000 (22:03 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Apr 2006 22:03:18 +0000 (22:03 +0000)
        Fix by beth.  Reviewed by darin.  Landed by eseidel.

        Make hackish fix to avoid crash in Xcode and Filemaker.
        <rdar://problem/4059059> Crash in RenderFlow::detach (XCode Documentation Window)

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge didNotOpenURL:pageCache:]):

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

WebCore/ChangeLog
WebCore/bridge/mac/WebCoreFrameBridge.mm

index f4cb6806db274bb43153ad903d8aba6cde6d16bc..7c30957dd7b8018a7f72c26cd11d41b819e34a38 100644 (file)
@@ -1,3 +1,13 @@
+2006-04-28  Eric Seidel  <eseidel@apple.com>
+
+        Fix by beth.  Reviewed by darin.  Landed by eseidel.
+
+        Make hackish fix to avoid crash in Xcode and Filemaker.
+        <rdar://problem/4059059> Crash in RenderFlow::detach (XCode Documentation Window)
+
+        * bridge/mac/WebCoreFrameBridge.mm:
+        (-[WebCoreFrameBridge didNotOpenURL:pageCache:]):
+
 2006-04-28  Alexey Proskuryakov  <ap@nypop.com>
 
         Reviewed by hyatt.
index 0eaf44896865a0c12ce8cc2e4834b390da8a34e8..263e47e994c94bfe29e49b6add006e3c3044ae35 100644 (file)
@@ -522,7 +522,14 @@ static inline WebCoreFrameBridge *bridge(Frame *frame)
         doc->setInPageCache(NO);
 
     KWQPageState *state = [pageCache objectForKey:WebCorePageCacheStateKey];
-    [state invalidate];
+
+    // FIXME: This is a grotesque hack to fix <rdar://problem/4059059> Crash in RenderFlow::detach
+    // Somehow the KWQPageState object is not properly updated, and is holding onto a stale document
+    // both Xcode and FileMaker see this crash, Safari does not.
+    // This if check MUST be removed as part of re-writing the loader down in WebCore
+    ASSERT(!state || ([state document] == doc));
+    if ([state document] == doc)
+        [state invalidate];
 }
 
 - (BOOL)canLoadURL:(NSURL *)URL fromReferrer:(NSString *)referrer hideReferrer:(BOOL *)hideReferrer