From e26ac99551a6ebb358396f2261233a1037619ece Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sat, 7 Jun 2025 11:25:51 +0200 Subject: [PATCH] Fix char16_t tolower conversion --- src/common/utils/string.hpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/common/utils/string.hpp b/src/common/utils/string.hpp index de59dfdd..53e416fd 100644 --- a/src/common/utils/string.hpp +++ b/src/common/utils/string.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -43,21 +44,18 @@ namespace utils::string return static_cast(std::tolower(static_cast(val))); } - inline char16_t char_to_lower(const char16_t val) - { - if (val >= u'A' && val <= u'Z') - { - return val + 32; - } - - return val; - } - inline wchar_t char_to_lower(const wchar_t val) { return static_cast(std::towlower(val)); } + inline char16_t char_to_lower(const char16_t val) + { + static_assert(sizeof(char16_t) <= sizeof(wchar_t)); + static_assert(sizeof(char16_t) == sizeof(uint16_t)); + return static_cast(char_to_lower(static_cast(static_cast(val)))); + } + template void to_lower_inplace(std::basic_string& str) {