[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

cblu cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:39:57 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 81a2a504067f6ad16489690fddf97dcbaf990e6d
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu May 1 21:44:36 2003 +0000

    WebKit:
    
            Fixed: 3234888 - REGRESSION: "can't add a plug-in to a defunct WebPluginController" error, then crash
            Fixed: 3226392 - REGRESSION: Safari crashed while loading Java applet at PopCap.com
    
            Reviewed by darin.
    
            * WebView.subproj/WebFramePrivate.h:
            * WebView.subproj/WebFramePrivate.m:
            (-[WebFrame setController:]): fixed comment
            * WebView.subproj/WebView.m:
            (-[WebView dealloc]): call [self _close]
            * WebView.subproj/WebViewPrivate.h:
            * WebView.subproj/WebViewPrivate.m:
            (-[WebViewPrivate dealloc]): let the WebView class clear the frames
            (-[WebView _close]): remove self from controller set and detach and release frame
    
    WebBrowser:
    
            Fixed: 3234888 - REGRESSION: "can't add a plug-in to a defunct WebPluginController" error, then crash
            Fixed: 3226392 - REGRESSION: Safari crashed while loading Java applet at PopCap.com
    
            Reviewed by darin.
    
            * BrowserWebController.m:
            (-[BrowserWebController close]): call [self _close]
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@4252 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index f59fb8e..37920ae 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,20 @@
+2003-05-01  Chris Blumenberg  <cblu at apple.com>
+
+        Fixed: 3234888 - REGRESSION: "can't add a plug-in to a defunct WebPluginController" error, then crash
+        Fixed: 3226392 - REGRESSION: Safari crashed while loading Java applet at PopCap.com
+        
+        Reviewed by darin.
+
+        * WebView.subproj/WebFramePrivate.h:
+        * WebView.subproj/WebFramePrivate.m:
+        (-[WebFrame setController:]): fixed comment
+        * WebView.subproj/WebView.m:
+        (-[WebView dealloc]): call [self _close]
+        * WebView.subproj/WebViewPrivate.h:
+        * WebView.subproj/WebViewPrivate.m:
+        (-[WebViewPrivate dealloc]): let the WebView class clear the frames
+        (-[WebView _close]): remove self from controller set and detach and release frame
+
 === Safari-77 ===
 
 2003-05-01  John Sullivan  <sullivan at apple.com>
diff --git a/WebKit/WebView.subproj/WebFramePrivate.h b/WebKit/WebView.subproj/WebFramePrivate.h
index f20ea7d..8d0c807 100644
--- a/WebKit/WebView.subproj/WebFramePrivate.h
+++ b/WebKit/WebView.subproj/WebFramePrivate.h
@@ -107,7 +107,6 @@ typedef enum {
 - (void)setController: (WebView *)controller;
 - (void)_setName:(NSString *)name;
 - (WebFrame *)_descendantFrameNamed:(NSString *)name;
-- (void)_controllerWillBeDeallocated;
 - (void)_detachFromParent;
 - (void)_closeOldDataSources;
 - (void)_setController: (WebView *)controller;
diff --git a/WebKit/WebView.subproj/WebFramePrivate.m b/WebKit/WebView.subproj/WebFramePrivate.m
index 477cb5b..66d85e3 100644
--- a/WebKit/WebView.subproj/WebFramePrivate.m
+++ b/WebKit/WebView.subproj/WebFramePrivate.m
@@ -251,12 +251,11 @@ Repeat load of the same URL (by any other means of navigation other than the rel
 
 - (void)setController: (WebView *)controller
 {
-    // To set controller to nil, we have to use _controllerWillBeDeallocated, not this.
+    // To set controller to nil, we have to use _detachFromParent, not this.
     ASSERT(controller);
     [_private setController: controller];
 }
 
-
 // helper method used in various nav cases below
 - (void)_addBackForwardItemClippedAtTarget:(BOOL)doClip
 {
@@ -359,11 +358,6 @@ Repeat load of the same URL (by any other means of navigation other than the rel
     return nil;
 }
 
-- (void)_controllerWillBeDeallocated
-{
-    [self _detachFromParent];
-}
-
 - (void)_detachChildren
 {
     // Note we have to be careful to remove the kids as we detach each one,
diff --git a/WebKit/WebView.subproj/WebView.m b/WebKit/WebView.subproj/WebView.m
index e06455c..2f1740c 100644
--- a/WebKit/WebView.subproj/WebView.m
+++ b/WebKit/WebView.subproj/WebView.m
@@ -130,10 +130,8 @@ NSString *WebElementLinkTitleKey = 		@"WebElementLinkTitle";
 
 - (void)dealloc
 {
-    if (_private->controllerSetName != nil) {
-	[WebControllerSets removeController:self fromSetNamed:_private->controllerSetName];
-    }
-
+    [self _close];
+    
     --WebControllerCount;
     
     [[NSNotificationCenter defaultCenter] removeObserver:self];
diff --git a/WebKit/WebView.subproj/WebViewPrivate.h b/WebKit/WebView.subproj/WebViewPrivate.h
index b950170..15c8cb2 100644
--- a/WebKit/WebView.subproj/WebViewPrivate.h
+++ b/WebKit/WebView.subproj/WebViewPrivate.h
@@ -161,6 +161,8 @@ Could be worth adding to the API.
 - _UIDelegateForwarder;
 
 - (void)_registerDraggedTypes;
+
+- (void)_close;
 @end
 
 @interface _WebSafeForwarder : NSObject
diff --git a/WebKit/WebView.subproj/WebViewPrivate.m b/WebKit/WebView.subproj/WebViewPrivate.m
index 431614e..65cf50d 100644
--- a/WebKit/WebView.subproj/WebViewPrivate.m
+++ b/WebKit/WebView.subproj/WebViewPrivate.m
@@ -45,31 +45,10 @@
     return self;
 }
 
-- (void)_clearControllerReferences: (WebFrame *)aFrame
-{
-    NSArray *frames;
-    WebFrame *nextFrame;
-    int i, count;
-        
-    [[aFrame dataSource] _setController: nil];
-    [[aFrame frameView] _setController: nil];
-    [aFrame _setController: nil];
-
-    // Walk the frame tree, niling the controller.
-    frames = [aFrame childFrames];
-    count = [frames count];
-    for (i = 0; i < count; i++){
-        nextFrame = [frames objectAtIndex: i];
-        [self _clearControllerReferences: nextFrame];
-    }
-}
-
 - (void)dealloc
 {
-    [self _clearControllerReferences: mainFrame];
-    [mainFrame _controllerWillBeDeallocated];
+    ASSERT(!mainFrame);
     
-    [mainFrame release];
     [backForwardList release];
     [applicationNameForUserAgent release];
     [userAgentOverride release];
@@ -78,8 +57,6 @@
         [userAgent[i] release];
     }
     
-    [controllerSetName release];
-
     [preferences release];
     [settings release];
     [hostWindow release];
@@ -110,6 +87,18 @@
     return [[WebFileTypeMappings sharedMappings] preferredExtensionForMIMEType:type];
 }
 
+- (void)_close
+{
+    if (_private->controllerSetName != nil) {
+        [WebControllerSets removeController:self fromSetNamed:_private->controllerSetName];
+        [_private->controllerSetName release];
+        _private->controllerSetName = nil;
+    }
+
+    [_private->mainFrame _detachFromParent];
+    [_private->mainFrame release];
+    _private->mainFrame = nil;
+}
 
 - (WebFrame *)_createFrameNamed:(NSString *)fname inParent:(WebFrame *)parent allowsScrolling:(BOOL)allowsScrolling
 {

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list