diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-01-31 04:56:23 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-01-31 04:56:23 +0000 |
commit | fad3e7690845f128aa0beba9adaae7038c01269f (patch) | |
tree | 6dbf158ea77e0311be9022dcc5741e8af1a27bcb /pango/pango-emoji.c | |
parent | 7b4a7d6dc00365289bece029e6698d01441bfb1f (diff) | |
parent | c895f9a8c4b7c4d5553d6fde1c95921117fffbc5 (diff) | |
download | pango-fad3e7690845f128aa0beba9adaae7038c01269f.tar.gz |
Merge branch 'misc-opt' into 'main'
shape: Avoid some overhead
See merge request GNOME/pango!674
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 |