diff options
Diffstat (limited to 'src/core/SkGlyphCache.cpp')
-rw-r--r-- | src/core/SkGlyphCache.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/core/SkGlyphCache.cpp b/src/core/SkGlyphCache.cpp index e030c4b9a3..057f4d731e 100644 --- a/src/core/SkGlyphCache.cpp +++ b/src/core/SkGlyphCache.cpp @@ -214,9 +214,14 @@ const SkPath* SkGlyphCache::findPath(const SkGlyph& glyph) { SkGlyph::PathData* pathData = fAlloc.make<SkGlyph::PathData>(); const_cast<SkGlyph&>(glyph).fPathData = pathData; pathData->fIntercept = nullptr; - SkPath* path = pathData->fPath = new SkPath; - fScalerContext->getPath(glyph.getPackedID(), path); - fMemoryUsed += sizeof(SkPath) + path->countPoints() * sizeof(SkPoint); + SkPath* path = new SkPath; + if (fScalerContext->getPath(glyph.getPackedID(), path)) { + pathData->fPath = path; + fMemoryUsed += sizeof(SkPath) + path->countPoints() * sizeof(SkPoint); + } else { + pathData->fPath = nullptr; + delete path; + } } } return glyph.fPathData ? glyph.fPathData->fPath : nullptr; |