src/fccache.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) New commits: diff-tree 323ecd0cd3b8eeb50c4af87d57f2ea7b19f37215 (from afe5a6716058e4b952a6ec1ab3f328a1c069a8c4) Author: Keith Packard <keithp@neko.keithp.com> Date: Mon Sep 4 23:19:59 2006 -0700 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_st 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; }