aboutsummaryrefslogtreecommitdiff
path: root/fontconfig
diff options
context:
space:
mode:
Diffstat (limited to 'fontconfig')
-rw-r--r--fontconfig/doc/fcconfig.fncs3
-rw-r--r--fontconfig/fc-cat/fc-cat.c9
-rw-r--r--fontconfig/src/fccfg.c5
-rw-r--r--fontconfig/src/fcinit.c9
-rw-r--r--fontconfig/src/fcmatch.c2
5 files changed, 19 insertions, 9 deletions
diff --git a/fontconfig/doc/fcconfig.fncs b/fontconfig/doc/fcconfig.fncs
index 24d7121e4..10f5afc7f 100644
--- a/fontconfig/doc/fcconfig.fncs
+++ b/fontconfig/doc/fcconfig.fncs
@@ -59,7 +59,8 @@ cause a new configuration to be created for use as current configuration.
@PURPOSE@ Set configuration as default
@DESC@
Sets the current default configuration to <parameter>config</parameter>. Implicitly calls
-FcConfigBuildFonts if necessary, returning FcFalse if that call fails.
+FcConfigBuildFonts if necessary, and FcConfigReference() to inrease the reference count
+in <parameter>config</parameter> since 2.12.0, returning FcFalse if that call fails.
@@
@RET@ FcConfig *
diff --git a/fontconfig/fc-cat/fc-cat.c b/fontconfig/fc-cat/fc-cat.c
index 9a2abb3fa..f0131b6d3 100644
--- a/fontconfig/fc-cat/fc-cat.c
+++ b/fontconfig/fc-cat/fc-cat.c
@@ -298,6 +298,7 @@ main (int argc, char **argv)
return 1;
}
FcConfigSetCurrent (config);
+ FcConfigDestroy (config);
args = FcStrSetCreate ();
if (!args)
@@ -315,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
{
@@ -340,6 +335,7 @@ main (int argc, char **argv)
fprintf (stderr, "%s: malloc failure\n", argv[0]);
return 1;
}
+ FcStrSetDestroy (args);
while ((arg = FcStrListNext (arglist)))
{
@@ -384,6 +380,7 @@ main (int argc, char **argv)
if (cache_file)
FcStrFree (cache_file);
}
+ FcStrListDone (arglist);
FcFini ();
return 0;
diff --git a/fontconfig/src/fccfg.c b/fontconfig/src/fccfg.c
index f8ee8d20e..55cb297cd 100644
--- a/fontconfig/src/fccfg.c
+++ b/fontconfig/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/fontconfig/src/fcinit.c b/fontconfig/src/fcinit.c
index 1e23c1fbb..db62c21f2 100644
--- a/fontconfig/src/fcinit.c
+++ b/fontconfig/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
diff --git a/fontconfig/src/fcmatch.c b/fontconfig/src/fcmatch.c
index b0e695df3..25081e2cb 100644
--- a/fontconfig/src/fcmatch.c
+++ b/fontconfig/src/fcmatch.c
@@ -375,7 +375,7 @@ FcCompareValueList (FcObject object,
best = 1e99;
bestStrong = 1e99;
bestWeak = 1e99;
- j = 1;
+ j = 0;
for (v1 = v1orig; v1; v1 = FcValueListNext(v1))
{
for (v2 = v2orig, k = 0; v2; v2 = FcValueListNext(v2), k++)