From a8386abc916c6ce4b0fa0ca3f9f68aa0232d4824 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 12 Mar 2003 22:15:39 +0000 Subject: [PATCH] Global cache time checking was using wrong file name and computing wrong count of fonts per file --- src/fccache.c | 10 +++++----- src/fcdir.c | 8 ++++++-- src/fcint.h | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/fccache.c b/src/fccache.c index 3a7cb6c..ab32629 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -309,14 +309,14 @@ FcCacheHash (const FcChar8 *string, int len) * Verify the saved timestamp for a file */ FcBool -FcGlobalCacheCheckTime (FcGlobalCacheInfo *info) +FcGlobalCacheCheckTime (const FcChar8 *file, FcGlobalCacheInfo *info) { struct stat statb; - if (stat ((char *) info->file, &statb) < 0) + if (stat ((char *) file, &statb) < 0) { if (FcDebug () & FC_DBG_CACHE) - printf (" file missing\n"); + printf (" file %s missing\n", file); return FcFalse; } if (statb.st_mtime != info->time) @@ -549,7 +549,7 @@ FcGlobalCacheScanDir (FcFontSet *set, * See if the timestamp recorded in the global cache * matches the directory time, if not, return False */ - if (!FcGlobalCacheCheckTime (&d->info)) + if (!FcGlobalCacheCheckTime (d->info.file, &d->info)) { if (FcDebug () & FC_DBG_CACHE) printf ("\tdir cache entry time mismatch\n"); @@ -633,7 +633,7 @@ FcGlobalCacheFileGet (FcGlobalCache *cache, } } if (count) - *count = max; + *count = max + 1; return match; } diff --git a/src/fcdir.c b/src/fcdir.c index 264c5b4..995a908 100644 --- a/src/fcdir.c +++ b/src/fcdir.c @@ -70,7 +70,7 @@ FcFileScan (FcFontSet *set, /* * Found a cache entry for the file */ - if (FcGlobalCacheCheckTime (&cache_file->info)) + if (FcGlobalCacheCheckTime (file, &cache_file->info)) { name = cache_file->name; need_scan = FcFalse; @@ -89,7 +89,8 @@ FcFileScan (FcFontSet *set, strlen ((const char *) file), FcFalse))) { - if (FcGlobalCacheCheckTime (&cache_dir->info)) + if (FcGlobalCacheCheckTime (cache_dir->info.file, + &cache_dir->info)) { font = 0; need_scan = FcFalse; @@ -199,6 +200,9 @@ FcDirScan (FcFontSet *set, strcat ((char *) file, "/"); base = file + strlen ((char *) file); + if (FcDebug () & FC_DBG_SCAN) + printf ("\tScanning dir %s\n", dir); + d = opendir ((char *) dir); if (!d) diff --git a/src/fcint.h b/src/fcint.h index ba5d9a4..9873a66 100644 --- a/src/fcint.h +++ b/src/fcint.h @@ -338,7 +338,7 @@ void FcGlobalCacheDestroy (FcGlobalCache *cache); FcBool -FcGlobalCacheCheckTime (FcGlobalCacheInfo *info); +FcGlobalCacheCheckTime (const FcChar8*file, FcGlobalCacheInfo *info); void FcGlobalCacheReferenced (FcGlobalCache *cache,