Index: Source/core/loader/cache/CachedResource.cpp |
diff --git a/Source/core/loader/cache/CachedResource.cpp b/Source/core/loader/cache/CachedResource.cpp |
index e41d4dbf232112e3219cef1f041ca96e2fdef439..854ae6f142304912ae323c13d4155890933e082e 100644 |
--- a/Source/core/loader/cache/CachedResource.cpp |
+++ b/Source/core/loader/cache/CachedResource.cpp |
@@ -447,6 +447,8 @@ void CachedResource::removeClient(CachedResourceClient* client) |
void CachedResource::allClientsRemoved() |
{ |
+ if (!m_loader) |
+ return; |
if (m_type == MainResource || m_type == RawResource) |
cancelTimerFired(&m_cancelTimer); |
else if (!m_cancelTimer.isActive()) |
@@ -459,6 +461,8 @@ void CachedResource::cancelTimerFired(Timer<CachedResource>* timer) |
if (hasClients() || !m_loader) |
return; |
m_loader->cancelIfNotFinishing(); |
+ if (m_status != Cached) |
+ memoryCache()->remove(this); |
} |
void CachedResource::destroyDecodedDataIfNeeded() |