]> git.wh0rd.org - fontconfig.git/commitdiff
Insert newly created caches into reference data structure.
authorKeith Packard <keithp@neko.keithp.com>
Sat, 9 Sep 2006 23:41:58 +0000 (16:41 -0700)
committerKeith Packard <keithp@neko.keithp.com>
Sat, 9 Sep 2006 23:41:58 +0000 (16:41 -0700)
All caches used in the application must be in the cache reference list so
internal references can be tracked correctly. Failing to have newly created
caches in the list would cause the cache to be deallocated while references
were still present.

src/fccache.c

index 11f88a788b2dc84ab5361055aac44f638924ffd7..e289c5dd89bd3f8a400a21fb8edacfa0645d42d2 100644 (file)
@@ -275,9 +275,18 @@ FcCacheInsert (FcCache *cache, struct stat *cache_stat)
     s->cache = cache;
     s->size = cache->size;
     s->ref = 1;
-    s->cache_dev = cache_stat->st_dev;
-    s->cache_ino = cache_stat->st_ino;
-    s->cache_mtime = cache_stat->st_mtime;
+    if (cache_stat)
+    {
+       s->cache_dev = cache_stat->st_dev;
+       s->cache_ino = cache_stat->st_ino;
+       s->cache_mtime = cache_stat->st_mtime;
+    }
+    else
+    {
+       s->cache_dev = 0;
+       s->cache_ino = 0;
+       s->cache_mtime = 0;
+    }
     
     /*
      * Insert into all fcCacheChains
@@ -658,6 +667,8 @@ FcDirCacheBuild (FcFontSet *set, const FcChar8 *dir, FcStrSet *dirs)
 
     FcSerializeDestroy (serialize);
     
+    FcCacheInsert (cache, NULL);
+
     return cache;
 
 bail2: