From b9c7fd94324f54ac66aa3cf6dc4c89a626c72fe5 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 12 Sep 2017 19:13:55 +0100 Subject: [PATCH] [Minor] Use libicu to find uppercase letters --- src/lua/lua_util.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index cfa44eaf3..a9f01429e 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -1172,33 +1172,28 @@ lua_util_fold_header (lua_State *L) static gint lua_util_is_uppercase (lua_State *L) { - const gchar *str, *p; - gsize sz, remain; - gunichar uc; + const gchar *str; + gsize sz; + gint32 i = 0; + UChar32 uc; guint nlc = 0, nuc = 0; str = luaL_checklstring (L, 1, &sz); - remain = sz; - if (str && remain > 0) { - while (remain > 0) { - uc = g_utf8_get_char_validated (str, remain); - p = g_utf8_next_char (str); + if (str && sz > 0) { + while (i >= 0 && i < sz) { + U8_NEXT (str, i, sz, uc); - if (p - str > (gint) remain) { + if (uc < 0) { break; } - remain -= p - str; - - if (g_unichar_isupper (uc)) { + if (u_isupper (uc)) { nuc++; } - else if (g_unichar_islower (uc)) { + else if (u_islower (uc)) { nlc++; } - - str = p; } } -- 2.39.5