Fix corner-cases of upper/lowercase conversion. (#418217, Denis Jacquerye)
authorMatthias Clasen <mclasen@redhat.com>
Fri, 23 Mar 2007 00:17:10 +0000 (00:17 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 23 Mar 2007 00:17:10 +0000 (00:17 +0000)
2007-03-22  Matthias Clasen  <mclasen@redhat.com>

        * glib/guniprop.c: Fix corner-cases of upper/lowercase conversion.
        (#418217, Denis Jacquerye)

svn path=/trunk/; revision=5433

ChangeLog
glib/guniprop.c

index 9233bff..3c13588 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-22  Matthias Clasen  <mclasen@redhat.com> 
+
+       * glib/guniprop.c: Fix corner-cases of upper/lowercase conversion.
+       (#418217, Denis Jacquerye)
+
 2007-03-22  Chris Wilson  <chris@chris-wilson.co.uk>
 
        * glib/gkeyfile.c: Track whether the last key=value pair in a group
index 908d3fe..7029037 100644 (file)
@@ -546,15 +546,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)
     {
@@ -629,9 +627,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;
 }
 
 /**