fix null fFontRef in GetDefaultFont()
http://codereview.appspot.com/4662041/
git-svn-id: http://skia.googlecode.com/svn/trunk@1709 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/ports/SkFontHost_mac_coretext.cpp b/src/ports/SkFontHost_mac_coretext.cpp
index fd8e284..a48c365 100644
--- a/src/ports/SkFontHost_mac_coretext.cpp
+++ b/src/ports/SkFontHost_mac_coretext.cpp
@@ -75,8 +75,13 @@
class SkTypeface_Mac : public SkTypeface {
public:
- SkTypeface_Mac(SkTypeface::Style style, SkFontID fontID, bool isMonospace)
- : SkTypeface(style, fontID, isMonospace), fFontRef(0) {}
+ SkTypeface_Mac(SkTypeface::Style style, SkFontID fontID, bool isMonospace,
+ CTFontRef fontRef, const char name[])
+ : SkTypeface(style, fontID, isMonospace) {
+ SkASSERT(fontRef);
+ fFontRef = fontRef; // we take over ownership
+ fName.set(name);
+ }
virtual ~SkTypeface_Mac() { CFRelease(fFontRef); }
@@ -85,14 +90,11 @@
};
static SkTypeface* NewFromFontRef(CTFontRef fontRef, const char name[]) {
+ SkASSERT(fontRef);
bool isMonospace;
SkTypeface::Style style = computeStyleBits(fontRef, &isMonospace);
- SkTypeface_Mac* face = new SkTypeface_Mac(style,
- SkTypefaceCache::NewFontID(),
- isMonospace);
- face->fFontRef = fontRef; // we take over ownership of fontRef
- face->fName.set(name);
- return face;
+ return new SkTypeface_Mac(style, SkTypefaceCache::NewFontID(),
+ isMonospace, fontRef, name);
}
static SkTypeface* NewFromName(const char familyName[],
@@ -156,8 +158,7 @@
static SkTypeface* gDefaultFace;
if (NULL == gDefaultFace) {
- gDefaultFace = new SkTypeface_Mac(SkTypeface::kNormal,
- SkTypefaceCache::NewFontID(), false);
+ gDefaultFace = NewFromName(FONT_DEFAULT_NAME, SkTypeface::kNormal);
}
return gDefaultFace;
}