diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2015-09-29 14:34:56 +0100 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2015-09-29 14:34:56 +0100 |
commit | f3159ba5141c2ab0e430e64742972df140f91c43 (patch) | |
tree | 8cf69ffe91973d870e78408c5392810bd5c27804 | |
parent | f2ad935e19338a29113492150f0c5a5fd5befd75 (diff) | |
download | harfbuzz-f3159ba5141c2ab0e430e64742972df140f91c43.tar.gz |
Micro-optimize hb_language_from_string()
As measured / improved by Benson Limketkai.
-rw-r--r-- | src/hb-common.cc | 10 |
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; } |