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

trey trey at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:16:55 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 4188fde0e616b0e3359e2c3c6c926e99a1cf1567
Author: trey <trey at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Dec 21 00:36:02 2002 +0000

    	3133829 - crash leaving page with a running applet
    
    	This fixes some holes in how we teardown plugins.  An additional fix is expected
    	from Mike Hay to finish the issue. (3133981)
    
            Reviewed by Richard
    
            * Plugins.subproj/WebPluginController.m:
            (-[WebPluginController destroyAllPlugins]):  frame=nil, so we don't do any more
    	messaging back to WK after this step.
            (-[WebPluginController showURL:inFrame:]):  bail if !frame
            (-[WebPluginController showStatus:]):  bail if !frame
            * WebView.subproj/WebFramePrivate.m:
            (-[WebFrame _detachFromParent]):  destroy plugins here.  We were only doing it
    	in the non-frame case.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3163 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index d9bb55c..83cec70 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,21 @@
+2002-12-20  Trey Matteson  <trey at apple.com>
+
+	3133829 - crash leaving page with a running applet
+
+	This fixes some holes in how we teardown plugins.  An additional fix is expected
+	from Mike Hay to finish the issue. (3133981)
+
+        Reviewed by Richard
+
+        * Plugins.subproj/WebPluginController.m:
+        (-[WebPluginController destroyAllPlugins]):  frame=nil, so we don't do any more
+	messaging back to WK after this step.
+        (-[WebPluginController showURL:inFrame:]):  bail if !frame
+        (-[WebPluginController showStatus:]):  bail if !frame
+        * WebView.subproj/WebFramePrivate.m:
+        (-[WebFrame _detachFromParent]):  destroy plugins here.  We were only doing it
+	in the non-frame case.
+
 === Alexander-43 ===
 
 2002-12-20  Trey Matteson  <trey at apple.com>
diff --git a/WebKit/Plugins.subproj/WebPluginController.m b/WebKit/Plugins.subproj/WebPluginController.m
index 2ab0e39..b882860 100644
--- a/WebKit/Plugins.subproj/WebPluginController.m
+++ b/WebKit/Plugins.subproj/WebPluginController.m
@@ -83,6 +83,10 @@
     [views makeObjectsPerformSelector:@selector(removeFromSuperviewWithoutNeedingDisplay)];
     [views makeObjectsPerformSelector:@selector(pluginDestroy)];
     [views removeAllObjects];
+
+    // after this point, do not try to do anything with the frame, even if we get some
+    // late arriving messages from the plugin
+    frame = nil;
 }
 
 - (void)windowWillClose:(NSNotification *)notification
@@ -94,7 +98,7 @@
 
 - (void)showURL:(NSURL *)URL inFrame:(NSString *)target
 {
-    if ( !URL ){
+    if ( !URL || !frame ){
         return;
     }
 
@@ -105,7 +109,7 @@
 
 - (void)showStatus:(NSString *)message
 {
-    if(!message){
+    if(!message || !frame){
         return;
     }
 
diff --git a/WebKit/WebView.subproj/WebFramePrivate.m b/WebKit/WebView.subproj/WebFramePrivate.m
index fa1cec8..ab0da96 100644
--- a/WebKit/WebView.subproj/WebFramePrivate.m
+++ b/WebKit/WebView.subproj/WebFramePrivate.m
@@ -335,7 +335,10 @@ Repeat load of the same URL (by any other means of navigation other than the rel
 {
     WebBridge *bridge = _private->bridge;
     _private->bridge = nil;
-    
+
+    // Destroy plug-ins before blowing away the view.
+    [_private->pluginController destroyAllPlugins];
+
     [self stopLoading];
     [self _saveScrollPositionToItem:[_private currentItem]];
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list