[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 08:28:10 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 6680bb481da71b20843058de34027cbbc8f196c1
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Mar 2 02:59:59 2004 +0000
Fixed: <rdar://problem/3574979>: REGRESSION (129-TOT): crash loading macromedia.com
deliverResource was being called after it had already been called in setDefersCallbacks:.
Reviewed by rjw.
* WebView.subproj/WebBaseResourceHandleDelegate.h:
* WebView.subproj/WebBaseResourceHandleDelegate.m:
(-[WebBaseResourceHandleDelegate deliverResource]): set deliveredResource to YES
(-[WebBaseResourceHandleDelegate deliverResourceAfterDelay]): new, calls deliverResource after a delay
(-[WebBaseResourceHandleDelegate loadWithRequest:]): call deliverResourceAfterDelay
(-[WebBaseResourceHandleDelegate setDefersCallbacks:]): call deliverResourceAfterDelay
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6151 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 298525c..d8b0531 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,18 @@
+2004-03-01 Chris Blumenberg <cblu at apple.com>
+
+ Fixed: <rdar://problem/3574979>: REGRESSION (129-TOT): crash loading macromedia.com
+
+ deliverResource was being called after it had already been called in setDefersCallbacks:.
+
+ Reviewed by rjw.
+
+ * WebView.subproj/WebBaseResourceHandleDelegate.h:
+ * WebView.subproj/WebBaseResourceHandleDelegate.m:
+ (-[WebBaseResourceHandleDelegate deliverResource]): set deliveredResource to YES
+ (-[WebBaseResourceHandleDelegate deliverResourceAfterDelay]): new, calls deliverResource after a delay
+ (-[WebBaseResourceHandleDelegate loadWithRequest:]): call deliverResourceAfterDelay
+ (-[WebBaseResourceHandleDelegate setDefersCallbacks:]): call deliverResourceAfterDelay
+
2004-03-01 Ken Kocienda <kocienda at apple.com>
Reviewed by me
diff --git a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h
index de1d573..5e8277f 100644
--- a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h
+++ b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h
@@ -36,6 +36,7 @@
BOOL reachedTerminalState;
BOOL defersCallbacks;
BOOL waitingToDeliverResource;
+ BOOL deliveredResource;
WebResourceDelegateImplementationCache implementations;
NSURL *originalURL;
NSMutableData *resourceData;
diff --git a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
index cee26e1..844b845 100644
--- a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
+++ b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
@@ -131,10 +131,19 @@
NSData *data = [resource data];
[self didReceiveData:data lengthReceived:[data length]];
[self didFinishLoading];
+ deliveredResource = YES;
waitingToDeliverResource = NO;
}
}
+- (void)deliverResourceAfterDelay
+{
+ if (resource && !defersCallbacks && !waitingToDeliverResource && !deliveredResource) {
+ [self performSelector:@selector(deliverResource) withObject:nil afterDelay:0];
+ waitingToDeliverResource = YES;
+ }
+}
+
- (BOOL)loadWithRequest:(NSURLRequest *)r
{
ASSERT(connection == nil);
@@ -143,6 +152,9 @@
NSURL *URL = [[r URL] retain];
[originalURL release];
originalURL = URL;
+
+ deliveredResource = NO;
+ waitingToDeliverResource = NO;
r = [self connection:connection willSendRequest:r redirectResponse:nil];
@@ -150,11 +162,8 @@
resource = [dataSource subresourceForURL:originalURL];
if (resource) {
[resource retain];
- waitingToDeliverResource = YES;
- if (!defersCallbacks) {
- // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
- [self performSelector:@selector(deliverResource) withObject:nil afterDelay:0];
- }
+ // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
+ [self deliverResourceAfterDelay];
return YES;
}
}
@@ -171,9 +180,8 @@
{
defersCallbacks = defers;
[connection setDefersCallbacks:defers];
- if (!defersCallbacks && waitingToDeliverResource) {
- [self deliverResource];
- }
+ // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
+ [self deliverResourceAfterDelay];
}
- (BOOL)defersCallbacks
diff --git a/WebKit/WebView.subproj/WebLoader.h b/WebKit/WebView.subproj/WebLoader.h
index de1d573..5e8277f 100644
--- a/WebKit/WebView.subproj/WebLoader.h
+++ b/WebKit/WebView.subproj/WebLoader.h
@@ -36,6 +36,7 @@
BOOL reachedTerminalState;
BOOL defersCallbacks;
BOOL waitingToDeliverResource;
+ BOOL deliveredResource;
WebResourceDelegateImplementationCache implementations;
NSURL *originalURL;
NSMutableData *resourceData;
diff --git a/WebKit/WebView.subproj/WebLoader.m b/WebKit/WebView.subproj/WebLoader.m
index cee26e1..844b845 100644
--- a/WebKit/WebView.subproj/WebLoader.m
+++ b/WebKit/WebView.subproj/WebLoader.m
@@ -131,10 +131,19 @@
NSData *data = [resource data];
[self didReceiveData:data lengthReceived:[data length]];
[self didFinishLoading];
+ deliveredResource = YES;
waitingToDeliverResource = NO;
}
}
+- (void)deliverResourceAfterDelay
+{
+ if (resource && !defersCallbacks && !waitingToDeliverResource && !deliveredResource) {
+ [self performSelector:@selector(deliverResource) withObject:nil afterDelay:0];
+ waitingToDeliverResource = YES;
+ }
+}
+
- (BOOL)loadWithRequest:(NSURLRequest *)r
{
ASSERT(connection == nil);
@@ -143,6 +152,9 @@
NSURL *URL = [[r URL] retain];
[originalURL release];
originalURL = URL;
+
+ deliveredResource = NO;
+ waitingToDeliverResource = NO;
r = [self connection:connection willSendRequest:r redirectResponse:nil];
@@ -150,11 +162,8 @@
resource = [dataSource subresourceForURL:originalURL];
if (resource) {
[resource retain];
- waitingToDeliverResource = YES;
- if (!defersCallbacks) {
- // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
- [self performSelector:@selector(deliverResource) withObject:nil afterDelay:0];
- }
+ // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
+ [self deliverResourceAfterDelay];
return YES;
}
}
@@ -171,9 +180,8 @@
{
defersCallbacks = defers;
[connection setDefersCallbacks:defers];
- if (!defersCallbacks && waitingToDeliverResource) {
- [self deliverResource];
- }
+ // Deliver the resource after a delay because callers don't expect to receive callbacks while calling this method.
+ [self deliverResourceAfterDelay];
}
- (BOOL)defersCallbacks
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list