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
This commit is contained in:
Keith Packard 2006-09-04 23:19:59 -07:00
parent afe5a67160
commit 323ecd0cd3
1 changed files with 3 additions and 1 deletions

View File

@ -331,7 +331,6 @@ FcCacheRemove (FcCache *cache)
update[i] = &next[i]; update[i] = &next[i];
} }
s = next[0]; s = next[0];
assert (s->cache == cache);
for (i = 0; i < fcCacheMaxLevel && *update[i] == s; i++) for (i = 0; i < fcCacheMaxLevel && *update[i] == s; i++)
*update[i] = s->next[i]; *update[i] = s->next[i];
while (fcCacheMaxLevel > 0 && fcCacheChains[fcCacheMaxLevel - 1] == NULL) while (fcCacheMaxLevel > 0 && fcCacheChains[fcCacheMaxLevel - 1] == NULL)
@ -348,7 +347,10 @@ FcCacheFindByStat (struct stat *cache_stat)
if (s->cache_dev == cache_stat->st_dev && if (s->cache_dev == cache_stat->st_dev &&
s->cache_ino == cache_stat->st_ino && s->cache_ino == cache_stat->st_ino &&
s->cache_mtime == cache_stat->st_mtime) s->cache_mtime == cache_stat->st_mtime)
{
s->ref++;
return s->cache; return s->cache;
}
return NULL; return NULL;
} }