[Fontconfig] fontconfig: Branch 'master'

Akira TAGOH tagoh at kemper.freedesktop.org
Fri Jun 9 04:50:11 UTC 2017


 fc-lang/fc-lang.c |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit 02161ef2d6eda4e9c0ad068058d51a67a09af92f
Author: Florent Rougon <f.rougon at free.fr>
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.

diff --git a/fc-lang/fc-lang.c b/fc-lang/fc-lang.c
index 38fc697..3443f51 100644
--- a/fc-lang/fc-lang.c
+++ b/fc-lang/fc-lang.c
@@ -561,6 +561,9 @@ main (int argc FC_UNUSED, char **argv)
 	while (setRangeChar <= c && c <= 'z')
 	    setRangeStart[setRangeChar++ - 'a'] = i;
     }
+    while (setRangeChar <= 'z') /* no language code starts with these letters */
+	setRangeStart[setRangeChar++ - 'a'] = i;
+
     for (setRangeChar = 'a'; setRangeChar < 'z'; setRangeChar++)
 	setRangeEnd[setRangeChar - 'a'] = setRangeStart[setRangeChar+1-'a'] - 1;
     setRangeEnd[setRangeChar - 'a'] = i - 1;


More information about the Fontconfig mailing list