mirror of
git://slackware.nl/current.git
synced 2024-12-28 09:59:53 +01:00
ca24bdf217
a/hwdata-0.342-noarch-1.txz: Upgraded. a/pam-1.5.1-x86_64-1.txz: Upgraded. ap/sqlite-3.34.0-x86_64-1.txz: Upgraded. l/libarchive-3.5.0-x86_64-1.txz: Upgraded. x/fontconfig-2.13.92-x86_64-1.txz: Upgraded. I'm pretty sure there was a good reason to switch to 2.13.92 on the devel release path, but I'm not sure the same can be said about 2.13.93. We'll stick with this one for now until there's a stable release or another good reason to bump it. x/xorg-server-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xephyr-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xnest-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xvfb-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xwayland-1.20.10-x86_64-1.txz: Upgraded. xap/gnuplot-5.4.1-x86_64-1.txz: Upgraded.
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
diff --git a/src/fccache.c b/src/fccache.c
|
|
index 2d398c73..7139b082 100644
|
|
--- a/src/fccache.c
|
|
+++ b/src/fccache.c
|
|
@@ -845,7 +845,7 @@ FcCacheTimeValid (FcConfig *config, FcCache *cache, struct stat *dir_stat)
|
|
FcCacheDir (cache), cache->checksum, (int) dir_stat->st_mtime);
|
|
#endif
|
|
|
|
- return cache->checksum == (int) dir_stat->st_mtime && fnano;
|
|
+ return dir_stat->st_mtime == 0 || (cache->checksum == (int) dir_stat->st_mtime && fnano);
|
|
}
|
|
|
|
static FcBool
|
|
@@ -1041,17 +1041,39 @@ static FcBool
|
|
FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, struct timeval *latest_cache_mtime, void *closure)
|
|
{
|
|
FcCache *cache = FcDirCacheMapFd (config, fd, fd_stat, dir_stat);
|
|
- struct timeval cache_mtime;
|
|
+ struct timeval cache_mtime, zero_mtime = { 0, 0}, dir_mtime;
|
|
|
|
if (!cache)
|
|
return FcFalse;
|
|
cache_mtime.tv_sec = fd_stat->st_mtime;
|
|
+ dir_mtime.tv_sec = dir_stat->st_mtime;
|
|
#ifdef HAVE_STRUCT_STAT_ST_MTIM
|
|
cache_mtime.tv_usec = fd_stat->st_mtim.tv_nsec / 1000;
|
|
+ dir_mtime.tv_usec = dir_stat->st_mtim.tv_nsec / 1000;
|
|
#else
|
|
cache_mtime.tv_usec = 0;
|
|
+ dir_mtime.tv_usec = 0;
|
|
#endif
|
|
- if (timercmp (latest_cache_mtime, &cache_mtime, <))
|
|
+ /* special take care of OSTree */
|
|
+ if (!timercmp (&zero_mtime, &dir_mtime, !=))
|
|
+ {
|
|
+ if (!timercmp (&zero_mtime, &cache_mtime, !=))
|
|
+ {
|
|
+ if (*((FcCache **) closure))
|
|
+ FcDirCacheUnload (*((FcCache **) closure));
|
|
+ }
|
|
+ else if (*((FcCache **) closure) && !timercmp (&zero_mtime, latest_cache_mtime, !=))
|
|
+ {
|
|
+ FcDirCacheUnload (cache);
|
|
+ return FcFalse;
|
|
+ }
|
|
+ else if (timercmp (latest_cache_mtime, &cache_mtime, <))
|
|
+ {
|
|
+ if (*((FcCache **) closure))
|
|
+ FcDirCacheUnload (*((FcCache **) closure));
|
|
+ }
|
|
+ }
|
|
+ else if (timercmp (latest_cache_mtime, &cache_mtime, <))
|
|
{
|
|
if (*((FcCache **) closure))
|
|
FcDirCacheUnload (*((FcCache **) closure));
|