summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSayamindu Dasgupta <sayamindu@gmail.com>2008-05-24 16:15:27 -0700
committerKeith Packard <keithp@keithp.com>2008-05-24 16:15:27 -0700
commitad3fc667914d19435ade56adc8afe584d5605d10 (patch)
tree84f5d8701fbc102acc992491cff04fc02c2c640f
parentb808204023ab47eb06dc520665eb7a0473320a9b (diff)
FcConfigUptoDate breaks if directory mtime is in the future. Bug 14424.
At OLPC, we came across a bug where the Browse activity (based on xulrunner) took 100% CPU after an upgrade/. It turns out the Mozilla uses FcConfigUptoDate() to check if new fonts have been added to the system, and this function was always returning FcFalse since we have the mtimes of some font directories set in the future. The attached patch makes FcConfigUptoDate() print a warning and return FcTrue if mtime of directories are in the future.
-rw-r--r--src/fccfg.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/fccfg.c b/src/fccfg.c
index 853eb7f3..acb0bb4a 100644
--- a/src/fccfg.c
+++ b/src/fccfg.c
@@ -156,7 +156,18 @@ FcConfigUptoDate (FcConfig *config)
(config_dir_time.set && (config_dir_time.time - config->rescanTime) > 0) ||
(font_time.set && (font_time.time - config->rescanTime) > 0))
{
- return FcFalse;
+ /* We need to check for potential clock problems here (OLPC ticket #6046) */
+ if ((config_time.set && (config_time.time - now) > 0) ||
+ (config_dir_time.set && (config_dir_time.time - now) > 0) ||
+ (font_time.set && (font_time.time - now) > 0))
+ {
+ fprintf (stderr,
+ "Fontconfig warning: Directory/file mtime in the future. New fonts may not be detected\n");
+ config->rescanTime = now;
+ return FcTrue;
+ }
+ else
+ return FcFalse;
}
config->rescanTime = now;
return FcTrue;