summaryrefslogtreecommitdiff
path: root/pango/pango-emoji.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pango-emoji.c')
-rw-r--r--pango/pango-emoji.c16
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