Fixup max decomposition len guarantee
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 17 Aug 2011 10:13:17 +0000 (12:13 +0200)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 17 Aug 2011 10:14:07 +0000 (12:14 +0200)
Unicode Technical Committee agreed to limit decomposition length to
18 in both cases.  Reflect that.

glib/gunidecomp.c
glib/guniprop.c

index df5a627..fe76ec3 100644 (file)
@@ -696,9 +696,12 @@ g_unichar_compose (gunichar  a,
  * The decomposed sequence is placed in @result.  Only up to
  * @result_len characters are written into @result.  The length
  * of the full decomposition (irrespective of @result_len) is
- * returned by the function.  For canonical decomposition, a
- * result buffer of length 4 is always enough, whereas for
- * compatibility decomposition, a buffer of 18 is enough.
+ * returned by the function.  For canonical decomposition,
+ * currently all decompositions are of length at most 4, but
+ * this may change in the future (very unlikely though).
+ * At any rate, Unicode does guarantee that a buffer of length
+ * 18 is always enough for both compatibility and canonical
+ * decompositions.
  *
  * See <ulink url="http://unicode.org/reports/tr15/">UAX#15</ulink>
  * for details.
index c22035c..55170d4 100644 (file)
@@ -855,7 +855,7 @@ real_toupper (const gchar *str,
                   * which could simplify this considerably.
                   */
                  gsize decomp_len, i;
-                 gunichar decomp[4];
+                 gunichar decomp[18];
 
                  decomp_len = g_unichar_fully_decompose (c, FALSE, decomp, 4);
                  for (i=0; i < decomp_len; i++)