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:
parent
afe5a67160
commit
323ecd0cd3
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue