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());
 }