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.
This commit is contained in:
parent
c37eeb8f1f
commit
02161ef2d6
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue