Hi, Trying to catch a bug (in which I haven't succeeded, see my next mail) I found a suspicious code in fontconfig-2.3.94/src/fclang.c. It says: === SNIP === const FcCharSet * FcCharSetForLang (const FcChar8 *lang) { int i; int country = -1; [...] for (i = 0; i < NUM_LANG_CHAR_SET; i++) { switch (FcLangCompare (lang, fcLangCharSets[i].lang)) { case FcLangEqual: return &fcLangCharSets[i].charset; case FcLangDifferentCountry: if (country == -1) country = i; default: break; } } if (country == -1) return 0; return &fcLangCharSets[i].charset; } === SNIP === I don't know what this code exactly stands for, but I have a feeling that the last return statement should rather be this: return &fcLangCharSets[country].charset; Currently it returns a pointer to a memory segment that is (I don't know) most likely either uninitialized or contains terminating null elements, since i is guaranteed to equal to NUM_LANG_CHAR_SET, furthermore country has no real integer meaning, it's basically just a boolean (either -1 or not) and the first "if (country == -1)" testing makes no sense either. I guess it was rather intended to return the first charset for which the language at least partially (same lang but different country) matches, which is remembered in country. -- Egmont _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/fontconfig