bool SkGlyphCache::initializePath(SkGlyph* glyph, const volatile void* data, size_t size) { // Don't overwrite the path if we already have one. We could have used a fallback if the // glyph was missing earlier. if (glyph->fPathData) return true; if (glyph->fWidth) { SkGlyph::PathData* pathData = fAlloc.make<SkGlyph::PathData>(); glyph->fPathData = pathData; pathData->fIntercept = nullptr; SkPath* path = new SkPath; if (!path->readFromMemory(const_cast<const void*>(data), size)) { delete path; return false; } pathData->fPath = path; fMemoryUsed += compute_path_size(*path); } return true; }