From f3159ba5141c2ab0e430e64742972df140f91c43 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 29 Sep 2015 14:34:56 +0100 Subject: [PATCH] Micro-optimize hb_language_from_string() As measured / improved by Benson Limketkai. --- src/hb-common.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hb-common.cc b/src/hb-common.cc index 291095ffd..e67059d10 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; }