diff options
Diffstat (limited to 'WebCore/platform/graphics/FontCache.cpp')
-rw-r--r-- | WebCore/platform/graphics/FontCache.cpp | 7 |
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(); |