Created attachment 131807 [details] [review] Possible fix in 'git format-patch' format Hello, As written at: https://lists.freedesktop.org/archives/fontconfig/2017-June/005929.html The following looks odd to me in src/fccharset.c: #define FC_CHAR_SET_HASH_SIZE 67 [...] static FcBool FcCharSetFreezeOrig (FcCharSetFreezer *freezer, const FcCharSet *orig, const FcCharSet *frozen) { FcCharSetOrigEnt **bucket = &freezer->orig_hash_table[((uintptr_t) orig) & FC_CHAR_SET_HASH_SIZE]; [...] static const FcCharSet * FcCharSetFindFrozen (FcCharSetFreezer *freezer, const FcCharSet *orig) { FcCharSetOrigEnt **bucket = &freezer->orig_hash_table[((uintptr_t) orig) & FC_CHAR_SET_HASH_SIZE]; [...] It seems to me that either FC_CHAR_SET_HASH_SIZE should be defined as a power of two minus one (2**n - 1 for some n), or the two occurrences of the & operator in the above lines should be replaced with a % operator. Otherwise, at most 8 buckets among the 67 available in freezer->orig_hash_table can effectively be used (67 = 64 + 2 + 1 and 2**3 = 8).
Thanks. merged into git.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.