Make the copy of fontconfig font names before freeing their memory.
R=reed@google.com
Review URL: https://codereview.chromium.org/19466004
git-svn-id: http://skia.googlecode.com/svn/trunk@10228 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/ports/SkFontConfigInterface_direct.cpp b/src/ports/SkFontConfigInterface_direct.cpp
index c93cacd..af704d0 100644
--- a/src/ports/SkFontConfigInterface_direct.cpp
+++ b/src/ports/SkFontConfigInterface_direct.cpp
@@ -563,13 +563,20 @@
SkAutoMutexAcquire ac(mutex_);
FcPattern* pat = FcPatternCreate();
- FcObjectSet* os = FcObjectSetBuild (FC_FAMILY, (char *) 0);
+ SkAutoTCallVProc<FcPattern, FcPatternDestroy> autoDestroyPat(pat);
+ if (NULL == pat) {
+ return NULL;
+ }
+
+ FcObjectSet* os = FcObjectSetBuild(FC_FAMILY, (char *)0);
+ SkAutoTCallVProc<FcObjectSet, FcObjectSetDestroy> autoDestroyOs(os);
if (NULL == os) {
return NULL;
}
+
FcFontSet* fs = FcFontList(NULL, pat, os);
+ SkAutoTCallVProc<FcFontSet, FcFontSetDestroy> autoDestroyFs(fs);
if (NULL == fs) {
- FcObjectSetDestroy(os);
return NULL;
}
@@ -584,10 +591,6 @@
}
}
- FcFontSetDestroy(fs);
- FcObjectSetDestroy(os);
- FcPatternDestroy(pat);
-
return SkDataTable::NewCopyArrays((const void*const*)names.begin(),
sizes.begin(), names.count());
}