[Fontconfig] fontconfig: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Feb 26 06:48:57 UTC 2020


 src/fccache.c |    9 +++++----
 src/fcinit.c  |    4 ++--
 2 files changed, 7 insertions(+), 6 deletions(-)

New commits:
commit fbc05949ef52c8a8d69233eed77f6636dffec280
Author: Akira TAGOH <akira at tagoh.org>
Date:   Wed Feb 26 15:42:21 2020 +0900

    Fix assertion in FcFini()
    
    Due to the unproper initialization of `latest_mtime', the duplicate caches
    was still in fcCacheChains with no references. which means no one frees
    them. thus, the memory leak was happened.
    
    Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/227

diff --git a/src/fccache.c b/src/fccache.c
index 4744a84..035458e 100644
--- a/src/fccache.c
+++ b/src/fccache.c
@@ -365,7 +365,6 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
     struct stat file_stat, dir_stat;
     FcBool	ret = FcFalse;
     const FcChar8 *sysroot = FcConfigGetSysRoot (config);
-    struct timeval latest_mtime = (struct timeval){ 0 };
 
     if (sysroot)
 	d = FcStrBuildFilename (sysroot, dir, NULL);
@@ -390,6 +389,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
 #ifndef _WIN32
 	FcBool retried = FcFalse;
 #endif
+	struct timeval latest_mtime = (struct timeval){ 0 };
+
 	if (sysroot)
 	    cache_hashed = FcStrBuildFilename (sysroot, cache_dir, cache_base, NULL);
 	else
@@ -1081,12 +1082,12 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat)
 
     if (!file_stat)
 	file_stat = &my_file_stat;
-    fd = FcDirCacheOpenFile (cache_file, file_stat);
-    if (fd < 0)
-	return NULL;
     config = FcConfigReference (NULL);
     if (!config)
 	return NULL;
+    fd = FcDirCacheOpenFile (cache_file, file_stat);
+    if (fd < 0)
+	return NULL;
     cache = FcDirCacheMapFd (config, fd, file_stat, NULL);
     FcConfigDestroy (config);
     close (fd);
diff --git a/src/fcinit.c b/src/fcinit.c
index 6f82ebd..0e1421e 100644
--- a/src/fcinit.c
+++ b/src/fcinit.c
@@ -199,10 +199,10 @@ void
 FcFini (void)
 {
     FcConfigFini ();
-    FcCacheFini ();
+    FcConfigPathFini ();
     FcDefaultFini ();
     FcObjectFini ();
-    FcConfigPathFini ();
+    FcCacheFini ();
 }
 
 /*


More information about the Fontconfig mailing list