[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:15:39 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 1c1bd94f7a3be5bec97bf931ad8ada11307bd958
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Dec 17 01:38:51 2002 +0000

    	Fixed: 3129503 - Crash cancelling download after closing browser window that started download
    
            Reviewed by rjw.
    
            * WebView.subproj/WebDataSourcePrivate.m:
            (-[WebDataSource _setLoading:]): Added comment about our tragic dependence on a non-retained reference to the controller.
            (-[WebDataSource _recursiveStopLoading]): Call webFrame before calling _stopLoading because we release the controller in _stopLoading and we depend on it in webFrame.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3094 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index fe2f603..c38d9ed 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,6 +1,14 @@
-=== Alexander-37 ===
+2002-12-16  Chris Blumenberg  <cblu at apple.com>
+
+	Fixed: 3129503 - Crash cancelling download after closing browser window that started download
+
+        Reviewed by rjw.
 
-=== WebKit-37u3 ===
+        * WebView.subproj/WebDataSourcePrivate.m:
+        (-[WebDataSource _setLoading:]): Added comment about our tragic dependence on a non-retained reference to the controller.
+        (-[WebDataSource _recursiveStopLoading]): Call webFrame before calling _stopLoading because we release the controller in _stopLoading and we depend on it in webFrame.
+
+=== Alexander-37 ===
 
 2002-12-16  Maciej Stachowiak  <mjs at apple.com>
 
diff --git a/WebKit/WebView.subproj/WebDataSourcePrivate.m b/WebKit/WebView.subproj/WebDataSourcePrivate.m
index de00775..42158c7 100644
--- a/WebKit/WebView.subproj/WebDataSourcePrivate.m
+++ b/WebKit/WebView.subproj/WebDataSourcePrivate.m
@@ -90,9 +90,11 @@
 - (void)_setLoading:(BOOL)loading
 {
     ASSERT_ARG(loading, loading == NO || loading == YES);
-    
-    if (_private->loading == loading)
+
+    if (_private->loading == loading) {
         return;
+    }
+    
     _private->loading = loading;
     
     if (loading) {
@@ -100,6 +102,9 @@
         [_private->controller retain];
     } else {
         [_private->controller release];
+        // FIXME: It would be cleanest to set the controller to nil here.  Keeping a non-retained reference
+        // to the controller is dangerous. WebSubresourceClient actually depends on this non-retained reference
+        // when starting loads after the data source has stoppped loading.
         [self release];
     }
 }
@@ -237,8 +242,12 @@
 - (void)_recursiveStopLoading
 {
     [self retain];
-    [self _stopLoading];
+    
+    // We depend on the controller in webFrame and we release it in _stopLoading,
+    // so call webFrame first so we don't send a message the released controller (3129503).
     [[[self webFrame] children] makeObjectsPerformSelector:@selector(stopLoading)];
+    [self _stopLoading];
+    
     [self release];
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list