diff --git a/ChangeLog b/ChangeLog index 0de1db034..16597d979 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-03-22 Matthias Clasen + + Merge from trunk: + + * glib/guniprop.c: Fix corner-cases of upper/lowercase conversion. + (#418217, Denis Jacquerye) + 2007-03-22 Chris Wilson Merge from trunk: diff --git a/glib/guniprop.c b/glib/guniprop.c index 91b8654ff..7101328af 100644 --- a/glib/guniprop.c +++ b/glib/guniprop.c @@ -506,15 +506,13 @@ g_unichar_toupper (gunichar c) if (val >= 0x1000000) { const gchar *p = special_case_table + val - 0x1000000; - return g_utf8_get_char (p); - } - else - { - /* Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR, - * do not have an uppercase equivalent, in which case val will be - * zero. */ - return val ? val : c; + val = g_utf8_get_char (p); } + /* Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR, + * do not have an uppercase equivalent, in which case val will be + * zero. + */ + return val ? val : c; } else if (t == G_UNICODE_TITLECASE_LETTER) { @@ -589,9 +587,11 @@ g_unichar_totitle (gunichar c) || title_table[i][2] == c) return title_table[i][0]; } - return (TYPE (c) == G_UNICODE_LOWERCASE_LETTER - ? ATTTABLE (c >> 8, c & 0xff) - : c); + + if (TYPE (c) == G_UNICODE_LOWERCASE_LETTER) + return g_unichar_toupper (c); + + return c; } /**