Reviewed by Ken.
authorsullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Feb 2005 17:48:06 +0000 (17:48 +0000)
committersullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Feb 2005 17:48:06 +0000 (17:48 +0000)
        - fixed <rdar://problem/3997185> The Web view on .Mac Prefs caused System Prefs
        to lockup (resolved by re-boot only)

        * WebCoreSupport.subproj/WebBridge.m:
        (-[WebBridge nextKeyViewOutsideWebFrameViews]):
        Don't allow recursion here; assert on debug build, return nil on deployment. I
        couldn't get my machine into a state to repro this problem (and neither could the
        originator), but it's obvious from the stack crawl that this method was recursing
        when it shouldn't have.

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

WebKit/ChangeLog
WebKit/WebCoreSupport.subproj/WebBridge.m

index 19b37778a8ba6685d0b5c57a0d8c610e09200572..9c7164109f7e1525db2e083563c4d38c49759ea9 100644 (file)
@@ -1,3 +1,17 @@
+2005-02-17  John Sullivan  <sullivan@apple.com>
+
+        Reviewed by Ken.
+        
+        - fixed <rdar://problem/3997185> The Web view on .Mac Prefs caused System Prefs 
+        to lockup (resolved by re-boot only)
+
+        * WebCoreSupport.subproj/WebBridge.m:
+        (-[WebBridge nextKeyViewOutsideWebFrameViews]):
+        Don't allow recursion here; assert on debug build, return nil on deployment. I
+        couldn't get my machine into a state to repro this problem (and neither could the
+        originator), but it's obvious from the stack crawl that this method was recursing
+        when it shouldn't have.
+
 2005-02-16  John Sullivan  <sullivan@apple.com>
 
         Written by Darin, reviewed by me.
index 7e02b8d18057d99d1c998c968c692e533fc134d7..0e3b23ea2cecb70fe898660d87d18e04d75eb164 100644 (file)
@@ -721,6 +721,14 @@ NSString *WebPluginContainerKey =   @"WebPluginContainer";
 
 - (NSView *)nextKeyViewOutsideWebFrameViews
 {
+    if (_inNextKeyViewOutsideWebFrameViews) {
+        // We should never get here, but unrepro bug 3997185 says we sometimes do.
+        // So we'll fail on debug builds to try to catch the problem, but on
+        // deployment builds we'll return nil to avoid recursing forever.
+        ASSERT_NOT_REACHED();
+        return nil;
+    }
+    
     _inNextKeyViewOutsideWebFrameViews = YES;
     WebView *webView = [_frame webView];
     // Do not ask webView for its next key view, but rather, ask it for