From c965c9f67759585909fa03236bad826de85bd39c Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 23 Mar 2015 13:30:59 +0900 Subject: Bug 89617 - FcConfigAppFontAddFile() returns false on any font file Prior to the change of 32ac7c75e8db0135ef37cf86f92d8b9be000c8bb FcConfigAppFontAddFile() always returned FcTrue no matter what fonts was added. after that, it always returned FcFalse because adding a font doesn't add any subdirs with FcFileScanConfig(). so changing that to simply ignore it. Also fixing it to return FcFalse if non-fonts was added, i.e. FcFreeTypeQuery() fails. https://bugs.freedesktop.org/show_bug.cgi?id=89617 diff --git a/src/fccfg.c b/src/fccfg.c index b92270b..5467493 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -2227,7 +2227,9 @@ FcConfigAppFontAddFile (FcConfig *config, FcStrSetDestroy (subdirs); return FcFalse; } - if ((sublist = FcStrListCreate (subdirs))) + if (subdirs->num == 0) + ret = FcTrue; + else if ((sublist = FcStrListCreate (subdirs))) { while ((subdir = FcStrListNext (sublist))) { diff --git a/src/fcdir.c b/src/fcdir.c index 00dee72..2e7f0dc 100644 --- a/src/fcdir.c +++ b/src/fcdir.c @@ -136,6 +136,8 @@ FcFileScanFontConfig (FcFontSet *set, ret = FcFalse; } } + else + ret = FcFalse; id++; } while (font && ret && id < count); return ret; diff --git a/test/Makefile.am b/test/Makefile.am index f270b50..bf1ec24 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -24,6 +24,13 @@ test_pthread_LDADD = $(top_builddir)/src/libfontconfig.la # to meaningfully test anything, and we are not installed yet. #TESTS += test-pthread endif +check_PROGRAMS += test-bz89617 +test_bz89617_CFLAGS = \ + -DSRCDIR="\"$(abs_srcdir)\"" + +test_bz89617_LDADD = $(top_builddir)/src/libfontconfig.la +TESTS += test-bz89617 + noinst_PROGRAMS = $(check_PROGRAMS) if !OS_WIN32 diff --git a/test/test-bz89617.c b/test/test-bz89617.c new file mode 100644 index 0000000..389f470 --- /dev/null +++ b/test/test-bz89617.c @@ -0,0 +1,38 @@ +/* + * fontconfig/test/test-bz89617.c + * + * Copyright © 2000 Keith Packard + * Copyright © 2015 Akira TAGOH + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of the author(s) not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. The authors make no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ +#include +#include + +int +main (void) +{ + FcConfig *config = FcConfigGetCurrent (); + + if (!FcConfigAppFontAddFile (config, SRCDIR "/4x6.pcf") || + FcConfigAppFontAddFile (config, "/dev/null")) + return 1; + + return 0; +} -- cgit v0.10.2