Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPReques...
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Feb 2005 22:22:27 +0000 (22:22 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Feb 2005 22:22:27 +0000 (22:22 +0000)
XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.

        Reviewed by David Harrison.

        * kwq/KWQLoader.mm:
        (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
        (KWQServeRequest):
        (KWQServeSynchronousRequest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8515 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/kwq/KWQLoader.mm

index dbeb976b947bfee20f8dbde3f30e5892105bd08a..2b94c4a5e9936014a80548beca1537f355729c9d 100644 (file)
@@ -1,3 +1,17 @@
+2005-02-03  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPRequest results
+
+       XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
+       self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.
+       
+        Reviewed by David Harrison.
+
+        * kwq/KWQLoader.mm:
+        (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
+        (KWQServeRequest):
+        (KWQServeSynchronousRequest):
+
 2005-02-03  Chris Blumenberg  <cblu@apple.com>
 
        Fixed: <rdar://problem/3938763> Cannot view Windows Media Player videos (soundtrack is played twice with delay)
index ce17807b2e4c6e503cb096e97680ff5986e89e48..7a833345d05cc5991661fcc8ecedd81cf017e175 100644 (file)
@@ -55,11 +55,11 @@ bool KWQServeRequest(Loader *loader, Request *request, TransferJob *job)
 }
 
 @interface NSDictionary (WebCore_Extras)
-- (id)_webcore_initWithHeaderString:(NSString *)string;
++ (id)_webcore_dictionaryWithHeaderString:(NSString *)string;
 @end
 
 @implementation NSDictionary (WebCore_Extras)
-- (id)_webcore_initWithHeaderString:(NSString *)string
++ (id)_webcore_dictionaryWithHeaderString:(NSString *)string
 {
     NSMutableDictionary *headers = [[NSMutableDictionary alloc] init];
 
@@ -99,9 +99,11 @@ bool KWQServeRequest(Loader *loader, Request *request, TransferJob *job)
        }
     }
 
-    self = [self initWithDictionary:headers];
+    NSDictionary *dictionary =  [NSDictionary dictionaryWithDictionary:headers];
+    
     [headers release];
-    return self;
+    
+    return dictionary;
 }
 
 @end
@@ -122,7 +124,7 @@ bool KWQServeRequest(Loader *loader, DocLoader *docLoader, TransferJob *job)
     QString headerString = job->queryMetaData("customHTTPHeader");
 
     if (!headerString.isEmpty()) {
-       headerDict = [[NSDictionary alloc] _webcore_initWithHeaderString:headerString.getNSString()];
+       headerDict = [NSDictionary _webcore_dictionaryWithHeaderString:headerString.getNSString()];
     }
 
     if (job->method() == "POST") {
@@ -176,7 +178,7 @@ QByteArray KWQServeSynchronousRequest(Loader *loader, DocLoader *docLoader, Tran
     QString headerString = job->queryMetaData("customHTTPHeader");
 
     if (!headerString.isEmpty()) {
-       headerDict = [[NSDictionary alloc] _webcore_initWithHeaderString:headerString.getNSString()];
+       headerDict = [[NSDictionary _webcore_dictionaryWithHeaderString:headerString.getNSString()] retain];
     }
 
     NSArray *postData = nil;