diff --git a/src/hb-common.cc b/src/hb-common.cc index 291095ffdce336f1b3e4e0cf79b2023979a62bf2..e67059d10bec2d0809c7a82d06d3a97e44845807 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; }