REGRESSION(r154967): http appcache tests crashing on WK1
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Sep 2013 14:20:59 +0000 (14:20 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Sep 2013 14:20:59 +0000 (14:20 +0000)
https://bugs.webkit.org/show_bug.cgi?id=120620

Reviewed by Andreas Kling.

* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::cacheDestroyed): Reintroduce pre-r154967 behavior that returned early in
this method if the passed-in ApplicationCache object was not found in the ApplicationCacheGroup's HashSet
of all the caches. This is now done by checking that the HashSet<T>::remove(T) returns true (meaning the
object was found in the HashSet and removed from it) in addition to that HashSet being subsequently empty
before the method moves on to destroying its ApplicationCacheGroup instance.

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

Source/WebCore/ChangeLog
Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp

index f70d165..c8b1842 100644 (file)
@@ -1,3 +1,17 @@
+2013-09-03  Zan Dobersek  <zdobersek@igalia.com>
+
+        REGRESSION(r154967): http appcache tests crashing on WK1
+        https://bugs.webkit.org/show_bug.cgi?id=120620
+
+        Reviewed by Andreas Kling.
+
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::cacheDestroyed): Reintroduce pre-r154967 behavior that returned early in
+        this method if the passed-in ApplicationCache object was not found in the ApplicationCacheGroup's HashSet
+        of all the caches. This is now done by checking that the HashSet<T>::remove(T) returns true (meaning the
+        object was found in the HashSet and removed from it) in addition to that HashSet being subsequently empty
+        before the method moves on to destroying its ApplicationCacheGroup instance.
+
 2013-09-03  Andre Moreira Magalhaes   <andre.magalhaes@collabora.co.uk>
 
         [gstreamer] Disable HTTP request "Accept-Encoding:" header field on gstreamer source element to avoid receiving the wrong size when retrieving data
index 3cbe132..b78582e 100644 (file)
@@ -387,8 +387,7 @@ void ApplicationCacheGroup::disassociateDocumentLoader(DocumentLoader* loader)
 
 void ApplicationCacheGroup::cacheDestroyed(ApplicationCache* cache)
 {
-    m_caches.remove(cache);
-    if (m_caches.isEmpty()) {
+    if (m_caches.remove(cache) && m_caches.isEmpty()) {
         ASSERT(m_associatedDocumentLoaders.isEmpty());
         ASSERT(m_pendingMasterResourceLoaders.isEmpty());
         delete this;