⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 93216 in webkit


Ignore:
Timestamp:
Aug 17, 2011, 10:23:24 AM (15 years ago)
Author:
bashi@chromium.org
Message:

[Chromium] Crash in HarfbuzzFace::~HarfbuzzFace
https://bugs.webkit.org/show_bug.cgi?id=66211

Holds Skia's unique font ID instead of FontPlatformData to avoid accessing freed FontPlatformData.

Reviewed by Tony Chang.

No new tests; no functional change.

  • platform/graphics/chromium/HarfbuzzSkia.cpp:

(WebCore::releaseCachedHarfbuzzFace): Changed the argument.
(WebCore::HarfbuzzFace::HarfbuzzFace): Changed to have Skia's font uniqueID instead of FontPlatformData.
(WebCore::HarfbuzzFace::~HarfbuzzFace): Uses m_uniqueID to call releaseCachedHarfbuzzFace.

  • platform/graphics/chromium/HarfbuzzSkia.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r93215 r93216  
     12011-08-17  Kenichi Ishibashi  <bashi@chromium.org>
     2
     3        [Chromium] Crash in HarfbuzzFace::~HarfbuzzFace
     4        https://bugs.webkit.org/show_bug.cgi?id=66211
     5
     6        Holds Skia's unique font ID instead of FontPlatformData to avoid accessing freed FontPlatformData.
     7
     8        Reviewed by Tony Chang.
     9
     10        No new tests; no functional change.
     11
     12        * platform/graphics/chromium/HarfbuzzSkia.cpp:
     13        (WebCore::releaseCachedHarfbuzzFace): Changed the argument.
     14        (WebCore::HarfbuzzFace::HarfbuzzFace): Changed to have Skia's font uniqueID instead of FontPlatformData.
     15        (WebCore::HarfbuzzFace::~HarfbuzzFace): Uses m_uniqueID to call releaseCachedHarfbuzzFace.
     16        * platform/graphics/chromium/HarfbuzzSkia.h:
     17
    1182011-08-17  Jeff Miller  <jeffm@apple.com>
    219
  • trunk/Source/WebCore/platform/graphics/chromium/HarfbuzzSkia.cpp

    r92425 r93216  
    247247}
    248248
    249 static void releaseCachedHarfbuzzFace(FontPlatformData* platformData)
    250 {
    251     SkFontID uniqueID = platformData->uniqueID();
     249static void releaseCachedHarfbuzzFace(SkFontID uniqueID)
     250{
    252251    HarfbuzzFaceCache::iterator result = gHarfbuzzFaceCache->find(uniqueID);
    253252    ASSERT(result != gHarfbuzzFaceCache->end());
     
    261260
    262261HarfbuzzFace::HarfbuzzFace(FontPlatformData* platformData)
    263     : m_platformData(platformData)
    264 {
    265     m_harfbuzzFace = getCachedHarfbuzzFace(m_platformData);
     262    : m_uniqueID(platformData->uniqueID())
     263{
     264    m_harfbuzzFace = getCachedHarfbuzzFace(platformData);
    266265}
    267266
    268267HarfbuzzFace::~HarfbuzzFace()
    269268{
    270     releaseCachedHarfbuzzFace(m_platformData);
     269    releaseCachedHarfbuzzFace(m_uniqueID);
    271270}
    272271
  • trunk/Source/WebCore/platform/graphics/chromium/HarfbuzzSkia.h

    r92425 r93216  
    5656    explicit HarfbuzzFace(FontPlatformData*);
    5757
    58     FontPlatformData* m_platformData;
     58    uint32_t m_uniqueID;
    5959    HB_FaceRec_* m_harfbuzzFace;
    6060};
Note: See TracChangeset for help on using the changeset viewer.