From 323ecd0cd3b8eeb50c4af87d57f2ea7b19f37215 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 4 Sep 2006 23:19:59 -0700 Subject: [PATCH] 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 --- src/fccache.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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; }