summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/FontCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/graphics/FontCache.cpp')
-rw-r--r--WebCore/platform/graphics/FontCache.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/WebCore/platform/graphics/FontCache.cpp b/WebCore/platform/graphics/FontCache.cpp
index 130313d..d9b4b28 100644
--- a/WebCore/platform/graphics/FontCache.cpp
+++ b/WebCore/platform/graphics/FontCache.cpp
@@ -307,12 +307,13 @@ void FontCache::purgeInactiveFontData(int count)
isPurging = true;
+ Vector<const SimpleFontData*, 20> fontDataToDelete;
ListHashSet<const SimpleFontData*>::iterator end = gInactiveFontData->end();
ListHashSet<const SimpleFontData*>::iterator it = gInactiveFontData->begin();
for (int i = 0; i < count && it != end; ++it, ++i) {
const SimpleFontData* fontData = *it.get();
gFontDataCache->remove(fontData->platformData());
- delete fontData;
+ fontDataToDelete.append(fontData);
}
if (it == end) {
@@ -323,6 +324,10 @@ void FontCache::purgeInactiveFontData(int count)
gInactiveFontData->remove(gInactiveFontData->begin());
}
+ size_t fontDataToDeleteCount = fontDataToDelete.size();
+ for (size_t i = 0; i < fontDataToDeleteCount; ++i)
+ delete fontDataToDelete[i];
+
Vector<FontPlatformDataCacheKey> keysToRemove;
keysToRemove.reserveInitialCapacity(gFontPlatformDataCache->size());
FontPlatformDataCache::iterator platformDataEnd = gFontPlatformDataCache->end();