aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkGlyphCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkGlyphCache.cpp')
-rw-r--r--src/core/SkGlyphCache.cpp11
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;