Charset hashing depended on uniqueness of leaves.

Charset hashing actually use the value of the leaf pointers, which is
clearly wrong, especially now that charsets are not shared across multiple
font directories.
This commit is contained in:
Keith Packard 2006-09-06 17:45:40 -07:00
parent 08bef68701
commit c3796ac606
1 changed files with 2 additions and 2 deletions

View File

@ -1064,8 +1064,8 @@ FcCharSetHash (FcCharSet *fcs)
int i; int i;
/* hash in leaves */ /* hash in leaves */
for (i = 0; i < fcs->num * (int) (sizeof (FcCharLeaf *) / sizeof (FcChar32)); i++) for (i = 0; i < fcs->num; i++)
hash = ((hash << 1) | (hash >> 31)) ^ (FcChar32)(FcCharSetLeaf(fcs, i)->map); hash = ((hash << 1) | (hash >> 31)) ^ FcCharLeafHash (FcCharSetLeaf(fcs,i));
/* hash in numbers */ /* hash in numbers */
for (i = 0; i < fcs->num; i++) for (i = 0; i < fcs->num; i++)
hash = ((hash << 1) | (hash >> 31)) ^ *FcCharSetNumbers(fcs); hash = ((hash << 1) | (hash >> 31)) ^ *FcCharSetNumbers(fcs);