Revert "Fix FcNameUnparseLangSet()" and redo it

This reverts commit 5c6d1ff23b and
fixes that bug using the new reverse-map I added in the previous
commit.
This commit is contained in:
Behdad Esfahbod 2009-08-25 20:40:30 -04:00
parent d354a321ee
commit c5f0a65b36
1 changed files with 18 additions and 11 deletions

View File

@ -551,20 +551,27 @@ bail0:
FcBool FcBool
FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls) FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls)
{ {
int i; int i, bit;
FcChar32 bits;
FcBool first = FcTrue; FcBool first = FcTrue;
for (i = 0; i < NUM_LANG_CHAR_SET; i++) for (i = 0; i < NUM_LANG_SET_MAP; i++)
if (FcLangSetBitGet (ls, i))
{ {
if ((bits = ls->map[i]))
{
for (bit = 0; bit <= 31; bit++)
if (bits & (1 << bit))
{
int id = (i << 5) | bit;
if (!first) if (!first)
if (!FcStrBufChar (buf, '|')) if (!FcStrBufChar (buf, '|'))
return FcFalse; return FcFalse;
if (!FcStrBufString (buf, fcLangCharSets[i].lang)) if (!FcStrBufString (buf, fcLangCharSets[fcLangCharSetIndicesInv[id]].lang))
return FcFalse; return FcFalse;
first = FcFalse; first = FcFalse;
} }
}
}
if (ls->extra) if (ls->extra)
{ {
FcStrList *list = FcStrListCreate (ls->extra); FcStrList *list = FcStrListCreate (ls->extra);