summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2015-09-29 14:34:56 +0100
committerBehdad Esfahbod <behdad@behdad.org>2015-09-29 14:34:56 +0100
commitf3159ba5141c2ab0e430e64742972df140f91c43 (patch)
tree8cf69ffe91973d870e78408c5392810bd5c27804
parentf2ad935e19338a29113492150f0c5a5fd5befd75 (diff)
downloadharfbuzz-f3159ba5141c2ab0e430e64742972df140f91c43.tar.gz
Micro-optimize hb_language_from_string()
As measured / improved by Benson Limketkai.
-rw-r--r--src/hb-common.cc10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/hb-common.cc b/src/hb-common.cc
index 291095ff..e67059d1 100644
--- a/src/hb-common.cc
+++ b/src/hb-common.cc
@@ -293,21 +293,21 @@ retry:
hb_language_t
hb_language_from_string (const char *str, int len)
{
- char strbuf[64];
-
if (!str || !len || !*str)
return HB_LANGUAGE_INVALID;
+ hb_language_item_t *item = NULL;
if (len >= 0)
{
/* NUL-terminate it. */
+ char strbuf[64];
len = MIN (len, (int) sizeof (strbuf) - 1);
memcpy (strbuf, str, len);
strbuf[len] = '\0';
- str = strbuf;
+ item = lang_find_or_insert (strbuf);
}
-
- hb_language_item_t *item = lang_find_or_insert (str);
+ else
+ item = lang_find_or_insert (str);
return likely (item) ? item->lang : HB_LANGUAGE_INVALID;
}