From: Keith Packard Date: Tue, 5 Sep 2006 06:19:59 +0000 (-0700) Subject: Correct reference count when sharing cache file objects. X-Git-Tag: 2.3.97~5 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=323ecd0cd3b8eeb50c4af87d57f2ea7b19f37215;p=fontconfig.git Correct reference count when sharing cache file objects. Multiple maps of the same cache file share the same mapped object; bump the cache object reference count in this case --- diff --git a/src/fccache.c b/src/fccache.c index 77a303d..32c36bd 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -331,7 +331,6 @@ FcCacheRemove (FcCache *cache) update[i] = &next[i]; } s = next[0]; - assert (s->cache == cache); for (i = 0; i < fcCacheMaxLevel && *update[i] == s; i++) *update[i] = s->next[i]; while (fcCacheMaxLevel > 0 && fcCacheChains[fcCacheMaxLevel - 1] == NULL) @@ -348,7 +347,10 @@ FcCacheFindByStat (struct stat *cache_stat) if (s->cache_dev == cache_stat->st_dev && s->cache_ino == cache_stat->st_ino && s->cache_mtime == cache_stat->st_mtime) + { + s->ref++; return s->cache; + } return NULL; }