Insert newly created caches into reference data structure.

All caches used in the application must be in the cache reference list so
internal references can be tracked correctly. Failing to have newly created
caches in the list would cause the cache to be deallocated while references
were still present.
This commit is contained in:
Keith Packard 2006-09-09 16:41:58 -07:00
parent 766a9b2f61
commit 49b44b277f
1 changed files with 14 additions and 3 deletions

View File

@ -275,9 +275,18 @@ FcCacheInsert (FcCache *cache, struct stat *cache_stat)
s->cache = cache; s->cache = cache;
s->size = cache->size; s->size = cache->size;
s->ref = 1; s->ref = 1;
if (cache_stat)
{
s->cache_dev = cache_stat->st_dev; 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;
}
else
{
s->cache_dev = 0;
s->cache_ino = 0;
s->cache_mtime = 0;
}
/* /*
* Insert into all fcCacheChains * Insert into all fcCacheChains
@ -658,6 +667,8 @@ FcDirCacheBuild (FcFontSet *set, const FcChar8 *dir, FcStrSet *dirs)
FcSerializeDestroy (serialize); FcSerializeDestroy (serialize);
FcCacheInsert (cache, NULL);
return cache; return cache;
bail2: bail2: