src/fcstr.c | 6 +----- test/run-test.sh | 12 +++++++++--- 2 files changed, 10 insertions(+), 8 deletions(-) New commits: commit a10d07682a09ce5effbd121920b119618f4b7775 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Wed Sep 28 23:30:06 2022 +0900 Fix test cases for wrong use of remap-dir diff --git a/test/run-test.sh b/test/run-test.sh index 1cedb8d..2b8a412 100644 --- a/test/run-test.sh +++ b/test/run-test.sh @@ -177,11 +177,14 @@ $FCCACHE "$FONTDIR" sleep 1 ls -l "$CACHEDIR" > out1 TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) -sed "s!@FONTDIR@!$TESTTMPDIR/fonts! +# Once font dir is remapped, we could use $FONTDIR as different one in theory. +# but we don't use it here and to avoid duplicate entries, set the non-existing +# directory here. +sed "s!@FONTDIR@!$FONTDIR/a! s!@REMAPDIR@!<remap-dir as-path="'"'"$FONTDIR"'"'">$TESTTMPDIR/fonts</remap-dir>! s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-match/fc-match"$EXEEXT" -f "%{file}\n" ":foundry=Misc" > xxx -$BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/test/test-bz106618"$EXEEXT" | sort > flist1 +$BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/test/test-bz106618"$EXEEXT" > flist1 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev find "$TESTTMPDIR"/fonts/ -type f -name '*.pcf' | sort > flist2 ls -l "$CACHEDIR" > out2 if cmp out1 out2 > /dev/null ; then : ; else @@ -273,7 +276,10 @@ sleep 1 (cd "$CACHEDIR"; ls -1 --color=no ./*cache*) > out1 TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) mkdir -p "$TESTTMPDIR"/cache.dir -sed "s!@FONTDIR@!$TESTTMPDIR/fonts! +# Once font dir is remapped, we could use $FONTDIR as different one in theory. +# but we don't use it here and to avoid duplicate entries, set the non-existing +# directory here. +sed "s!@FONTDIR@!$FONTDIR/a! s!@REMAPDIR@!<remap-dir as-path="'"'"$FONTDIR"'"'">$TESTTMPDIR/fonts</remap-dir>! s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf $BWRAP --bind / / --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-cache/fc-cache"$EXEEXT" "$TESTTMPDIR"/fonts commit fc0e9a78d2fe3b26f0b93c2a99b160e75e2a9f89 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Wed Sep 28 21:39:09 2022 +0900 Real fix of 91114d18c The change in 91114d18c broke remapping font paths. Patch from Mattias Clasen Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/331 diff --git a/src/fcstr.c b/src/fcstr.c index 3fe518f..5ce65da 100644 --- a/src/fcstr.c +++ b/src/fcstr.c @@ -1467,7 +1467,6 @@ FcStrSetAddFilenamePairWithSalt (FcStrSet *set, const FcChar8 *a, const FcChar8 { FcChar8 *new_a = NULL; FcChar8 *new_b = NULL; - FcChar8 *rs = NULL; FcBool ret; if (a) @@ -1487,10 +1486,7 @@ FcStrSetAddFilenamePairWithSalt (FcStrSet *set, const FcChar8 *a, const FcChar8 } } /* Override maps with new one if exists */ - if (FcStrSetMemberAB (set, new_a, new_b, &rs)) - { - FcStrSetDel (set, rs); - } + FcStrSetDel (set, new_a); ret = FcStrSetAddTriple (set, new_a, new_b, salt); if (new_a) FcStrFree (new_a);