cvs: gd /libgd/src gdft.c

[email protected] ("Takeshi Abe") Wed, 15 Apr 2009 17:24:45 -0000
Newsgroups php.gd.cvs
Message-ID <cvstabe1239816285@cvsserver>
tabe		Wed Apr 15 17:24:45 2009 UTC

  Modified files:              
    /gd/libgd/src	gdft.c 
  Log:
  decrement the pattern reference count in case of failure.
  
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gdft.c?r1=1.40&r2=1.41&diff_format=u
Index: gd/libgd/src/gdft.c
diff -u gd/libgd/src/gdft.c:1.40 gd/libgd/src/gdft.c:1.41
--- gd/libgd/src/gdft.c:1.40	Wed Apr 15 16:19:15 2009
+++ gd/libgd/src/gdft.c	Wed Apr 15 17:24:45 2009
@@ -1517,8 +1517,12 @@
       font = find_font(pattern);
       FcPatternDestroy(pattern);
 
-      if (!font || FcPatternGetString(font, FC_FAMILY, 0, &family) != FcResultMatch)
-	return "fontconfig: Couldn't retrieve font family name.";
+      if (!font)
+        return "fontconfig: Couldn't find font.";
+      if (FcPatternGetString(font, FC_FAMILY, 0, &family) != FcResultMatch) {
+        FcPatternDestroy(font);
+        return "fontconfig: Couldn't retrieve font family name.";
+      }
       
       /* Check whether we got the font family we wanted. */
       if (strcmp((const char *)family, postscript_alias[i].family) != 0) {
@@ -1558,8 +1562,12 @@
   }
 #endif
 
-  if (!font || FcPatternGetString(font, FC_FILE, 0, &file) != FcResultMatch)
+  if (!font)
+    return "fontconfig: Couldn't find font.";
+  if (FcPatternGetString(font, FC_FILE, 0, &file) != FcResultMatch) {
+    FcPatternDestroy(font);
     return "fontconfig: Couldn't retrieve font file name.";
+  }
 
   *fontpath = strdup((const char *)file);