From 97293e07dd688b3d81cd6e7ecd5df4cdef4c87d8 Mon Sep 17 00:00:00 2001 From: Patrick Lam Date: Fri, 27 Jan 2006 05:47:59 +0000 Subject: [PATCH] Move FcConfigNormalizeFontDir call so that it doesn't result in infinite recursion (reported by Ronny V. Vindenes). --- ChangeLog | 9 +++++++++ fc-cache/fc-cache.c | 6 +++++- fontconfig/fontconfig.h | 4 ++++ src/fccache.c | 8 -------- src/fcint.h | 4 ---- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index e85113b..0975c22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-01-27 Patrick Lam + * fc-cache/fc-cache.c (scanDirs): + * fontconfig/fontconfig.h: + * src/fcint.h: + * src/fccache.c (FcDirCacheValid, FcDirCacheHasCurrentArch): + + Move FcConfigNormalizeFontDir call so that it doesn't result in + infinite recursion (reported by Ronny V. Vindenes). + 2006-01-26 Patrick Lam * src/fccache.c (FcDirCacheValid, FcDirCacheHasCurrentArch): * src/fccfg.c (FcConfigNormalizeFontDir): diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index 4900e45..2d6c2c3 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -112,7 +112,7 @@ static int scanDirs (FcStrList *list, FcConfig *config, char *program, FcBool force, FcBool verbose) { int ret = 0; - FcChar8 *dir; + const FcChar8 *dir; FcFontSet *set; FcStrSet *subdirs; FcStrList *sublist; @@ -124,6 +124,10 @@ scanDirs (FcStrList *list, FcConfig *config, char *program, FcBool force, FcBool */ while ((dir = FcStrListNext (list))) { + dir = FcConfigNormalizeFontDir (config, dir); + if (!dir) + return FcFalse; + if (verbose) { printf ("%s: \"%s\": ", program, dir); diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h index 1549593..0bcef19 100644 --- a/fontconfig/fontconfig.h +++ b/fontconfig/fontconfig.h @@ -328,6 +328,10 @@ FcConfigBuildFonts (FcConfig *config); FcStrList * FcConfigGetFontDirs (FcConfig *config); +const FcChar8 * +FcConfigNormalizeFontDir (FcConfig *config, + const FcChar8 *d); + FcStrList * FcConfigGetConfigDirs (FcConfig *config); diff --git a/src/fccache.c b/src/fccache.c index 8491551..a687483 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -609,10 +609,6 @@ FcDirCacheValid (const FcChar8 *dir) struct stat file_stat, dir_stat; int fd; - dir = FcConfigNormalizeFontDir (FcConfigGetCurrent(), dir); - if (!dir) - return FcFalse; - if (stat ((char *) dir, &dir_stat) < 0) return FcFalse; @@ -648,10 +644,6 @@ FcDirCacheHasCurrentArch (const FcChar8 *dir) off_t current_arch_start; char *current_arch_machine_name; - dir = FcConfigNormalizeFontDir (FcConfigGetCurrent(), dir); - if (!dir) - return FcFalse; - fd = FcDirCacheOpen (dir); if (fd < 0) goto bail; diff --git a/src/fcint.h b/src/fcint.h index 48f209e..b77b50d 100644 --- a/src/fcint.h +++ b/src/fcint.h @@ -496,10 +496,6 @@ FcBool FcConfigAddConfigFile (FcConfig *config, const FcChar8 *f); -const FcChar8 * -FcConfigNormalizeFontDir (FcConfig *config, - const FcChar8 *d); - FcBool FcConfigSetCache (FcConfig *config, const FcChar8 *c); -- 2.39.5