summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Anderson <thomasanderson@chromium.org>2023-02-09 01:31:26 +0000
committerTom Anderson <thomasanderson@chromium.org>2023-02-09 01:31:31 +0000
commit2ef790a0dbbab24235d1b8c0325ab4414de5f0a9 (patch)
tree7bb6e2225065c7c73f91f153c7754a820f4df5c7
parent311f6caaa8ad251b04127b4cf394b2116ad81879 (diff)
downloadfontconfig-2ef790a0dbbab24235d1b8c0325ab4414de5f0a9.tar.gz
Fix filepaths added when scanning with sysroot
This fixes a regression introduced by 76f88e780. When using FONTCONFIG_SYSROOT=/home/tom/test_fonts, strace reveals that fontconfig attempted to open /test_fonts/Ahem.ttf instead of /home/tom/test_fonts/Ahem.ttf. The fix is to use `s_dir` instead of `dir` in `file_prefix`.
-rw-r--r--src/fcdir.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/fcdir.c b/src/fcdir.c
index e332897..6f7b383 100644
--- a/src/fcdir.c
+++ b/src/fcdir.c
@@ -201,7 +201,7 @@ FcDirScanConfig (FcFontSet *set,
DIR *d;
struct dirent *e;
FcStrSet *files;
- FcChar8 *file_prefix, *s_dir = NULL;
+ FcChar8 *file_prefix = NULL, *s_dir = NULL;
FcChar8 *base;
const FcChar8 *sysroot = FcConfigGetSysRoot (config);
FcBool ret = FcTrue;
@@ -213,16 +213,6 @@ FcDirScanConfig (FcFontSet *set,
if (!set && !dirs)
return FcTrue;
- /* freed below */
- file_prefix = (FcChar8 *) malloc (strlen ((char *) dir) + 1 + FC_MAX_FILE_LEN + 1);
- if (!file_prefix) {
- ret = FcFalse;
- goto bail;
- }
- strcpy ((char *) file_prefix, (char *) dir);
- strcat ((char *) file_prefix, FC_DIR_SEPARATOR_S);
- base = file_prefix + strlen ((char *) file_prefix);
-
if (sysroot)
s_dir = FcStrBuildFilename (sysroot, dir, NULL);
else
@@ -232,6 +222,16 @@ FcDirScanConfig (FcFontSet *set,
goto bail;
}
+ /* freed below */
+ file_prefix = (FcChar8 *) malloc (strlen ((char *) s_dir) + 1 + FC_MAX_FILE_LEN + 1);
+ if (!file_prefix) {
+ ret = FcFalse;
+ goto bail;
+ }
+ strcpy ((char *) file_prefix, (char *) s_dir);
+ strcat ((char *) file_prefix, FC_DIR_SEPARATOR_S);
+ base = file_prefix + strlen ((char *) file_prefix);
+
if (FcDebug () & FC_DBG_SCAN)
printf ("\tScanning dir %s\n", s_dir);