From: Keith Packard Date: Sat, 9 Sep 2006 23:41:58 +0000 (-0700) Subject: Insert newly created caches into reference data structure. X-Git-Tag: 2.4.0~7 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=49b44b277f2a8a67009a3b68b178b2f1a4c7f72a;hp=766a9b2f61458202be0fbf5745ce1e02ecd95c6e;p=fontconfig.git Insert newly created caches into reference data structure. 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. --- diff --git a/src/fccache.c b/src/fccache.c index 11f88a7..e289c5d 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -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: