Index: Source/core/fetch/MemoryCache.cpp |
diff --git a/Source/core/fetch/MemoryCache.cpp b/Source/core/fetch/MemoryCache.cpp |
index 4e0d6023a6601d46e792b103183c77e4eb2362d9..d2ac1a72337ac8ab2ea0a534f29aedfcead61172 100644 |
--- a/Source/core/fetch/MemoryCache.cpp |
+++ b/Source/core/fetch/MemoryCache.cpp |
@@ -223,10 +223,11 @@ void MemoryCache::pruneDeadResources() |
MemoryCacheEntry* current = m_allResources[i].m_tail; |
while (current) { |
MemoryCacheEntry* previous = current->m_previousInAllResourcesList; |
- if (current->m_resource->wasPurged()) { |
+ if (current->m_resource->wasPurged() && current->m_resource->canDelete()) { |
ASSERT(!current->m_resource->hasClients()); |
ASSERT(!current->m_resource->isPreloaded()); |
- evict(current->m_resource.get()); |
+ bool wasEvicted = evict(current->m_resource.get()); |
+ ASSERT_UNUSED(wasEvicted, wasEvicted); |
} |
current = previous; |
} |
@@ -265,8 +266,10 @@ void MemoryCache::pruneDeadResources() |
while (current) { |
MemoryCacheEntry* previous = current->m_previousInAllResourcesList; |
ASSERT(!previous || contains(previous->m_resource.get())); |
- if (!current->m_resource->hasClients() && !current->m_resource->isPreloaded() && !current->m_resource->isCacheValidator()) { |
- evict(current->m_resource.get()); |
+ if (!current->m_resource->hasClients() && !current->m_resource->isPreloaded() |
+ && !current->m_resource->isCacheValidator() && current->m_resource->canDelete()) { |
+ bool wasEvicted = evict(current->m_resource.get()); |
+ ASSERT_UNUSED(wasEvicted, wasEvicted); |
if (targetSize && m_deadSize <= targetSize) |
return; |
} |