[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