changeset 21501:aecea8c8afee

Properly free fontconfig patterns
author reimar
date Wed, 06 Dec 2006 11:28:49 +0000
parents e7e7f397f991
children a58943013e1d
files libvo/font_load_ft.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/font_load_ft.c	Wed Dec 06 10:46:50 2006 +0000
+++ b/libvo/font_load_ft.c	Wed Dec 06 11:28:49 2006 +0000
@@ -1140,6 +1140,7 @@
 {
 #ifdef HAVE_FONTCONFIG
     FcPattern *fc_pattern;
+    FcPattern *fc_pattern2;
     FcChar8 *s;
     FcBool scalable;
 #endif
@@ -1160,18 +1161,23 @@
 	fc_pattern = FcNameParse(font_name);
 	FcConfigSubstitute(0, fc_pattern, FcMatchPattern);
 	FcDefaultSubstitute(fc_pattern);
+	fc_pattern2 = fc_pattern;
 	fc_pattern = FcFontMatch(0, fc_pattern, 0);
+	FcPatternDestroy(fc_pattern2);
 	FcPatternGetBool(fc_pattern, FC_SCALABLE, 0, &scalable);
 	if (scalable != FcTrue) {
+	    FcPatternDestroy(fc_pattern);
     	    fc_pattern = FcNameParse("sans-serif");
     	    FcConfigSubstitute(0, fc_pattern, FcMatchPattern);
     	    FcDefaultSubstitute(fc_pattern);
+	    fc_pattern2 = fc_pattern;
     	    fc_pattern = FcFontMatch(0, fc_pattern, 0);
+	    FcPatternDestroy(fc_pattern2);
 	}
 	// s doesn't need to be freed according to fontconfig docs
 	FcPatternGetString(fc_pattern, FC_FILE, 0, &s);
 	vo_font=read_font_desc_ft(s, width, height);
-	free(fc_pattern);
+	FcPatternDestroy(fc_pattern);
     }
     else
 #endif