[Fontconfig] fontconfig: Branch 'master' - 2 commits

Akira TAGOH tagoh at kemper.freedesktop.org
Tue Aug 12 02:53:54 PDT 2014


 fc-cat/fc-cat.c |    9 +++------
 src/fccfg.c     |    5 +++++
 src/fcinit.c    |    9 ++++++++-
 3 files changed, 16 insertions(+), 7 deletions(-)

New commits:
commit eb2689c67ba2da969d33be43a05af1e8975e9837
Author: Akira TAGOH <akira at tagoh.org>
Date:   Tue Aug 12 18:53:04 2014 +0900

    Fix the memory leak in fc-cat

diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c
index 3a303c2..f0131b6 100644
--- a/fc-cat/fc-cat.c
+++ b/fc-cat/fc-cat.c
@@ -316,12 +316,6 @@ main (int argc, char **argv)
 		return 1;
 	    }
 	}
-	arglist = FcStrListCreate (args);
-	if (!arglist)
-	{
-	    fprintf (stderr, "%s: malloc failure\n", argv[0]);
-	    return 1;
-	}
     }
     else
     {
@@ -341,6 +335,7 @@ main (int argc, char **argv)
 	fprintf (stderr, "%s: malloc failure\n", argv[0]);
 	return 1;
     }
+    FcStrSetDestroy (args);
 
     while ((arg = FcStrListNext (arglist)))
     {
@@ -385,6 +380,7 @@ main (int argc, char **argv)
 	if (cache_file)
 	    FcStrFree (cache_file);
     }
+    FcStrListDone (arglist);
 
     FcFini ();
     return 0;
commit 23e88d8c6a5d3d0a9526a3f3217bd33a7607cbab
Author: Akira TAGOH <akira at tagoh.org>
Date:   Tue Aug 12 18:48:00 2014 +0900

    Increase the refcount in FcConfigSetCurrent()
    
    https://bugs.freedesktop.org/show_bug.cgi?id=82432

diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c
index 9a2abb3..3a303c2 100644
--- a/fc-cat/fc-cat.c
+++ b/fc-cat/fc-cat.c
@@ -298,6 +298,7 @@ main (int argc, char **argv)
 	return 1;
     }
     FcConfigSetCurrent (config);
+    FcConfigDestroy (config);
     
     args = FcStrSetCreate ();
     if (!args)
diff --git a/src/fccfg.c b/src/fccfg.c
index f8ee8d2..55cb297 100644
--- a/src/fccfg.c
+++ b/src/fccfg.c
@@ -434,6 +434,7 @@ retry:
     if (!fc_atomic_ptr_cmpexch (&_fcConfig, cfg, config))
 	goto retry;
 
+    FcConfigReference (config);
     if (cfg)
 	FcConfigDestroy (cfg);
 
@@ -2405,6 +2406,10 @@ FcConfigSetSysRoot (FcConfig      *config,
     {
 	config = FcInitLoadOwnConfigAndFonts (config);
 	FcConfigSetCurrent (config);
+	/* FcConfigSetCurrent() increases the refcount.
+	 * decrease it here to avoid the memory leak.
+	 */
+	FcConfigDestroy (config);
     }
 }
 
diff --git a/src/fcinit.c b/src/fcinit.c
index 1e23c1f..db62c21 100644
--- a/src/fcinit.c
+++ b/src/fcinit.c
@@ -189,11 +189,18 @@ FcBool
 FcInitReinitialize (void)
 {
     FcConfig	*config;
+    FcBool	ret;
 
     config = FcInitLoadConfigAndFonts ();
     if (!config)
 	return FcFalse;
-    return FcConfigSetCurrent (config);
+    ret = FcConfigSetCurrent (config);
+    /* FcConfigSetCurrent() increases the refcount.
+     * decrease it here to avoid the memory leak.
+     */
+    FcConfigDestroy (config);
+
+    return ret;
 }
 
 FcBool


More information about the Fontconfig mailing list