]> granicus.if.org Git - libass/commitdiff
strdup() fontconfig strings freed by caller
authorGrigori Goronzy <greg@blackbox>
Thu, 8 Oct 2009 21:55:23 +0000 (23:55 +0200)
committerGrigori Goronzy <greg@blackbox>
Thu, 8 Oct 2009 21:55:23 +0000 (23:55 +0200)
fontconfig_select() can return the path to the default font as fallback,
but the caller frees it later.  Return a copy with strdup() instead.

libass/ass_fontconfig.c

index 006be9767a69619bc42385bd36950f99241e0da5..15bc5c7a7471c9439543641a9e246de001d70fd7 100644 (file)
@@ -250,7 +250,8 @@ char *fontconfig_select(ASS_Library *library, FCInstance *priv,
     char *res = 0;
     if (!priv->config) {
         *index = priv->index_default;
-        return priv->path_default;
+        res = priv->path_default ? strdup(priv->path_default) : 0;
+        return res;
     }
     if (family && *family)
         res =
@@ -266,7 +267,7 @@ char *fontconfig_select(ASS_Library *library, FCInstance *priv,
                     family, bold, italic, res, *index);
     }
     if (!res && priv->path_default) {
-        res = priv->path_default;
+        res = strdup(priv->path_default);
         *index = priv->index_default;
         ass_msg(library, MSGL_WARN, "fontconfig_select: Using default font: "
                 "(%s, %d, %d) -> %s, %d", family, bold, italic,
@@ -534,7 +535,8 @@ char *fontconfig_select(ASS_Library *library, FCInstance *priv,
                         uint32_t code)
 {
     *index = priv->index_default;
-    return priv->path_default;
+    char* res = priv->path_default ? strdup(priv->path_default) : 0;
+    return res;
 }
 
 FCInstance *fontconfig_init(ASS_Library *library,