summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/xmake/string/case.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/core/src/xmake/string/case.c b/core/src/xmake/string/case.c
index aeadc4e62..858d4be08 100644
--- a/core/src/xmake/string/case.c
+++ b/core/src/xmake/string/case.c
@@ -79,8 +79,13 @@ static tb_int_t xm_string_case(lua_State* lua, tb_bool_t lower) {
tb_uint32_t* p = (tb_uint32_t*)dst_data;
tb_size_t n = (tb_size_t)dst_size / 4;
while (n--) {
- if (*p < 0x10000)
- *p = (lower? towlower((wint_t)*p) : towupper((wint_t)*p));
+ if (lower) {
+ if (iswupper((wint_t)*p))
+ *p = towlower((wint_t)*p);
+ } else {
+ if (iswlower((wint_t)*p))
+ *p = towupper((wint_t)*p);
+ }
p++;
}
#endif