diff options
author | Philip Withnall <philip@tecnocode.co.uk> | 2011-12-06 18:30:43 +0000 |
---|---|---|
committer | Philip Withnall <philip@tecnocode.co.uk> | 2011-12-06 19:09:01 +0000 |
commit | 3ac7c35656649b1d1fcf2ccaa670b854809d4cd8 (patch) | |
tree | f979dac16df248a2a05a4be1669b915614d94b12 | |
parent | 990af4b3725faba230abc6c2e68c112da6f13b41 (diff) |
Bug 665685 — Add a #define for the max length of a Unicode decomposition
Add G_UNICHAR_MAX_DECOMPOSITION_LEN for the maximum length of the
decomposition of a single Unicode character.
Closes: bgo#665685
-rw-r--r-- | glib/gunicode.h | 12 | ||||
-rw-r--r-- | glib/gunidecomp.c | 4 | ||||
-rw-r--r-- | glib/guniprop.c | 4 |
3 files changed, 16 insertions, 4 deletions
diff --git a/glib/gunicode.h b/glib/gunicode.h index 213b38f91..f89c07c19 100644 --- a/glib/gunicode.h +++ b/glib/gunicode.h @@ -551,6 +551,18 @@ gsize g_unichar_fully_decompose (gunichar ch, gunichar *result, gsize result_len); +/** + * G_UNICHAR_MAX_COMPAT_DECOMPOSITION_LEN: + * + * The maximum length (in codepoints) of a compatibility or canonical + * decomposition of a single Unicode character. + * + * This is as defined by Unicode 6.1. + * + * Since: 2.31.3 + */ +#define G_UNICHAR_MAX_DECOMPOSITION_LEN 18 /* codepoints */ + /* Compute canonical ordering of a string in-place. This rearranges decomposed characters in the string according to their combining classes. See the Unicode manual for more information. */ diff --git a/glib/gunidecomp.c b/glib/gunidecomp.c index 6cbc2df3a..090b42d25 100644 --- a/glib/gunidecomp.c +++ b/glib/gunidecomp.c @@ -700,8 +700,8 @@ g_unichar_compose (gunichar a, * 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, so that is the size recommended. + * %G_UNICHAR_MAX_DECOMPOSITION_LEN is always enough for both compatibility and + * canonical decompositions, so that is the size recommended. * * See <ulink url="http://unicode.org/reports/tr15/">UAX#15</ulink> * for details. diff --git a/glib/guniprop.c b/glib/guniprop.c index 8b139ae9a..5b818e3d4 100644 --- a/glib/guniprop.c +++ b/glib/guniprop.c @@ -855,9 +855,9 @@ real_toupper (const gchar *str, * which could simplify this considerably. */ gsize decomp_len, i; - gunichar decomp[18]; + gunichar decomp[G_UNICHAR_MAX_DECOMPOSITION_LEN]; - decomp_len = g_unichar_fully_decompose (c, FALSE, decomp, 18); + decomp_len = g_unichar_fully_decompose (c, FALSE, decomp, G_N_ELEMENTS (decomp)); for (i=0; i < decomp_len; i++) { if (decomp[i] != 0x307 /* COMBINING DOT ABOVE */) |