diff options
Diffstat (limited to 'pango/pango-emoji.c')
-rw-r--r-- | pango/pango-emoji.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/pango/pango-emoji.c b/pango/pango-emoji.c index e1f16dba..83ebfe6e 100644 --- a/pango/pango-emoji.c +++ b/pango/pango-emoji.c @@ -213,14 +213,19 @@ typedef unsigned char *emoji_text_iter_t; PangoEmojiIter * _pango_emoji_iter_init (PangoEmojiIter *iter, - const char *text, - int length) + const char *text, + int length, + unsigned int n_chars) { - unsigned int n_chars = g_utf8_strlen (text, length); - unsigned char *types = g_malloc (n_chars); + unsigned char *types; unsigned int i; const char *p; + if (n_chars < 64) + types = iter->types_; + else + types = g_malloc (n_chars); + p = text; for (i = 0; i < n_chars; i++) { @@ -247,7 +252,8 @@ _pango_emoji_iter_init (PangoEmojiIter *iter, void _pango_emoji_iter_fini (PangoEmojiIter *iter) { - g_free (iter->types); + if (iter->types != iter->types_) + g_free (iter->types); } gboolean |