Fix race in SkTypeface_FreeType::onCountGlyphs.
authorbungeman <bungeman@google.com>
Fri, 29 Apr 2016 22:05:02 +0000 (15:05 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 29 Apr 2016 22:05:02 +0000 (15:05 -0700)
Found by TSAN. This makes the operation slightly slower, but it is
not on any user's hot path.

BUG=skia:5238

Review-Url: https://codereview.chromium.org/1940613002

src/ports/SkFontHost_FreeType.cpp
src/ports/SkFontHost_FreeType_common.h

index 82648c3..b53364e 100644 (file)
@@ -1526,14 +1526,9 @@ int SkTypeface_FreeType::onCharsToGlyphs(const void* chars, Encoding encoding,
 }
 
 int SkTypeface_FreeType::onCountGlyphs() const {
-    // we cache this value, using -1 as a sentinel for "not computed"
-    if (fGlyphCount < 0) {
-        AutoFTAccess fta(this);
-        FT_Face face = fta.face();
-        // if the face failed, we still assign a non-negative value
-        fGlyphCount = face ? face->num_glyphs : 0;
-    }
-    return fGlyphCount;
+    AutoFTAccess fta(this);
+    FT_Face face = fta.face();
+    return face ? face->num_glyphs : 0;
 }
 
 SkTypeface::LocalizedStrings* SkTypeface_FreeType::onCreateFamilyNameIterator() const {
index 8c13a80..6d050cd 100644 (file)
@@ -73,7 +73,6 @@ public:
 protected:
     SkTypeface_FreeType(const SkFontStyle& style, SkFontID uniqueID, bool isFixedPitch)
         : INHERITED(style, uniqueID, isFixedPitch)
-        , fGlyphCount(-1)
     {}
 
     virtual SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&,
@@ -95,8 +94,6 @@ protected:
                                   size_t length, void* data) const override;
 
 private:
-    mutable int fGlyphCount;
-
     typedef SkTypeface INHERITED;
 };