commit 01085e07857cddf382db736a9e061f92f50397d6 Author: Akira TAGOH Date: Wed Jul 5 17:37:26 2017 +0900 Bump version to 2.12.4 README | 33 +++++++++++++++++++++++++++++++-- configure.ac | 2 +- fontconfig/fontconfig.h | 2 +- 3 files changed, 33 insertions(+), 4 deletions(-) commit 047b42fccab0dc99726356a9c8c7c50aea806f60 Author: Akira TAGOH Date: Wed Jul 5 17:35:28 2017 +0900 Fix distcheck error src/Makefile.am | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit c35e8df46dc041596674083772e59d5934635ae2 Author: Akira TAGOH Date: Wed Jul 5 17:20:00 2017 +0900 Update libtool revision configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e831f12a38b490cb832830a582a54d8647884988 Author: Josselin Mouette Date: Tue Jun 27 11:34:38 2017 +0200 Treat C.UTF-8 and C.utf8 locales as built in the C library. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=717423 https://bugs.freedesktop.org/show_bug.cgi?id=101605 src/fclang.c | 2 ++ 1 file changed, 2 insertions(+) commit 5d8ee5231ab1ea6f36d3103b4de24712c3ae2f64 Author: Helmut Grohne Date: Tue Jun 27 11:06:14 2017 +0200 fix cross compilation Even though fontconfig's build system tries to build edit-sgml with the build arch compiler, it gets the runes wrong and actually builds it with the host arch compiler. This patch makes it use the right compiler. Bug-Debian: https://bugs.debian.org/779461 https://bugs.freedesktop.org/show_bug.cgi?id=101554 doc/Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 60e1fe550ae5d945c45a7ad04b46ec78da0309aa Author: Florent Rougon Date: Thu Jun 8 16:13:29 2017 +0200 FcCharSetFreezeOrig(), FcCharSetFindFrozen(): use all buckets of freezer->orig_hash_table As written at: https://lists.freedesktop.org/archives/fontconfig/2017-June/005929.html I think FcCharSetFreezeOrig() and FcCharSetFindFrozen() should use the % operator instead of & when computing the bucket index for freezer->orig_hash_table, otherwise at most 8 buckets among the 67 available (FC_CHAR_SET_HASH_SIZE) are used. Another way would be to change FC_CHAR_SET_HASH_SIZE to be of the form 2**n -1 (i.e., a power of two minus one). In such a case, the & and % operators would be equivalent. src/fccharset.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7940ada7a89115455b493e64f961e9c3d2cc5045 Author: Akira TAGOH Date: Mon Jun 12 13:36:56 2017 +0900 Add a testcase for Bug#131804 test/Makefile.am | 4 ++ test/test-bz131804.c | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+) commit b0a5b4b48e9c94bcebe902fb88fbe447f2ccd04e Author: Florent Rougon Date: Thu Jun 8 09:34:53 2017 +0200 FcLangSetCompare(): fix bug when two charsets come from different "buckets" In fcLangCountrySets, it may happen that two charsets for the same language but different territories are found in different FcChar32 "buckets" (different "columns" on the same line). This is currently the case for the following pairs: mn-cn and mn-mn pap-an and pap-aw The FcLangSetCompare() code so far used to return FcLangDifferentLang instead of FcLangDifferentTerritory when comparing: an FcLangSet containing only mn-cn with one containing only mn-mn or an FcLangSet containing only pap-an with one containing only pap-aw This commit fixes this problem. src/fclang.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit 209619b1a63f415320c8d379efc0525273c7b575 Author: Florent Rougon Date: Wed Jun 7 01:34:51 2017 +0200 Fix erroneous test on language id in FcLangSetPromote() FcLangSetIndex() indicates "not found" with a non-negative return value. Return value 0 doesn't imply "not found", it rather means "language found at index 0 in fcLangCharSets". src/fclang.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4970c7e810fec29b5ad40a595850288f14f48e37 Author: Florent Rougon Date: Tue Jun 6 23:32:28 2017 +0200 Fix an off-by-one error in FcLangSetIndex() This commit fixes a bug that can be reproduced like this: - remove all languages starting with 'a' in fc-lang/Makefile.am (in ORTH's definition); - rebuild fontconfig with this change (-> new fc-lang/fclang.h); - create an FcLangSet 'ls1' that contains at least the first language from fcLangCharSets (i.e., the first *remaining* in lexicographic order); let's assume it is "ba" for the sake of this description; - create an FcLangSet 'ls2' that only contains the language "aa" (any language starting with 'a' should work as well); - check the return value of FcLangSetContains(ls1, ls2); The expected return value is FcFalse, however it is FcTrue if you use the code before this commit. What happens is that FcLangSetIndex() returns 0, because this is the index of the first slot after the not-found language "aa" in fcLangCharSets (since we removed all languages starting with 'a'). However, this index happens to be non-negative, therefore FcLangSetContainsLang() mistakenly infers that the language "aa" was found in fcLangCharSets, and thus calls FcLangSetBitGet(ls1, 0), which returns FcTrue since we've put the first remaining language "ba" in the 'ls1' language set. The "return -low;" statement previously in FcLangSetIndex() was inconsistent with the final return statement. "return -(low+1);" fixes this inconsistency as well as the incorrect behavior described above. src/fclang.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 02161ef2d6eda4e9c0ad068058d51a67a09af92f Author: Florent Rougon Date: Tue Jun 6 11:10:18 2017 +0200 fc-lang: gracefully handle the case where the last language initial is < 'z' FcLangSetIndex() contains code like this: low = fcLangCharSetRanges[firstChar - 'a'].begin; high = fcLangCharSetRanges[firstChar - 'a'].end; /* no matches */ if (low > high) The assumption behind this test didn't hold before this commit, unless there is at least one language name that starts with 'z' (which is thankfully the case in our world :-). If the last language name in lexicographic order starts for instance with 'x', this change ensures that fcLangCharSetRanges['y' - 'a'].begin and fcLangCharSetRanges['z' - 'a'].begin are equal to NUM_LANG_CHAR_SET, in order to make the above assumption correct in all cases. fc-lang/fc-lang.c | 3 +++ 1 file changed, 3 insertions(+) commit c37eeb8f1ff2cb8655a27545ca32cc50ab70e8d6 Author: Florent Rougon Date: Mon Jun 5 10:58:41 2017 +0200 FcCharSetHash(): use the 'numbers' values to compute the hash Before this commit, FcCharSetHash() repeatedly used the address of the 'numbers' array of an FcCharSet to compute the FcCharSet hash, instead of the value of each array element. This is not good for even spreading of the FcCharSet objects among the various buckets of the hash table (and should thus reduce performance). This bug appears to have been mistakenly introduced in commit cd2ec1a940888ebcbd323a8000d2fcced41ddf9e (June 2005). src/fccharset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28139816d62b8444ca61a000a87c71e59fef104d Author: Akira TAGOH Date: Mon Jun 5 21:00:36 2017 +0900 Fix the build failure when srcdir != builddir and have gperf 3.1 or later installed src/Makefile.am | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 5c49354a782870d632884174f10c7fb10351c667 Author: Akira TAGOH Date: Sat Jun 3 19:02:53 2017 +0900 Force regenerate fcobjshash.h when updating Makefile To avoid a situation of mismatching the declaration of hash function src/Makefile.am | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 79058f4e911487275323e93146e1e93ad15afcd8 Author: Masamichi Hosoda Date: Wed Jan 11 20:42:56 2017 +0900 Bug 99360 - Fix cache file update on MinGW On Windows, opened or locked files cannot be removed. Since fontconfig locked an old cache file while updating the file, fontconfig failed to replace the file with updated file on Windows. This patch makes fontconfig does not lock the old cache file while updating it on Windows. src/fcdir.c | 8 ++++++++ 1 file changed, 8 insertions(+) commit 7d949ececdff18a1718eba6b7cb9f63f84486a10 Author: Jan Alexander Steffens (heftig) Date: Wed May 31 21:38:26 2017 +0200 Fix testing PCF_CONFIG_OPTION_LONG_FAMILY_NAMES (CFLAGS need to be right) configure.ac | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)