fix for <rdar://problem/4135705> REGRESSION (412-TOT) crash in TV Tracker...
authoradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Jun 2005 22:23:58 +0000 (22:23 +0000)
committeradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Jun 2005 22:23:58 +0000 (22:23 +0000)
        Reviewed by Darin.

        Synchronous loads don't get added to our requestsByDocument dictionary, so we should try to remove the request in this case.

        * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::removeFromRequestsByDocument): added checks to make sure request exists before trying to remove it.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/xmlhttprequest.cpp

index 34944d7f21734717f6b487cf9d1641974aafb6e7..5dbe93899a933a0833a3b83277a9bf3f0d468dc6 100644 (file)
@@ -1,3 +1,13 @@
+2005-06-01  Adele Peterson  <adele@apple.com>
+
+        fix for <rdar://problem/4135705> REGRESSION (412-TOT) crash in TV Tracker widget - KJS::XMLHttpRequest::removeFromRequestsByDocument()
+
+        Reviewed by Darin.
+
+        Synchronous loads don't get added to our requestsByDocument dictionary, so we should try to remove the request in this case. 
+
+        * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::removeFromRequestsByDocument): added checks to make sure request exists before trying to remove it.
+
 2005-05-30  Darin Adler  <darin@apple.com>
 
         Reviewed by John (fix for Radar bug) and Vicki (all the rest).
index b169e2324ff21960b8ac0830bba8ad88f960d47e..5ef1077d0777e4abf687ad7d14bfd0b61bb57553 100644 (file)
@@ -633,9 +633,11 @@ void XMLHttpRequest::removeFromRequestsByDocument()
   assert(doc);
 
   QPtrDict<XMLHttpRequest> *requests = requestsByDocument().find(doc);
-  assert(requests);
 
-  assert(requests->find(this));
+  // Since synchronous loads are not added to requestsByDocument(), we need to make sure we found the request.
+  if (!requests || !requests->find(this))
+    return;
+
   requests->remove(this);
 
   if (requests->isEmpty()) {