From 22e62713ccfbbde5445ba8757c9f0a07acc4639e Mon Sep 17 00:00:00 2001 From: nekosu Date: Fri, 17 May 2024 20:44:55 +0800 Subject: [PATCH] feat: check wchar_t size --- include/parser/parser.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/include/parser/parser.hpp b/include/parser/parser.hpp index 22d8a07..5556e2d 100644 --- a/include/parser/parser.hpp +++ b/include/parser/parser.hpp @@ -509,11 +509,17 @@ inline std::optional parser::parse_ } } else if constexpr (std::is_same_v) { - if (ext_cp <= 0xFFFF) { - result.push_back(static_cast(ext_cp)); + if constexpr (sizeof (wchar_t) == 4) { + result.push_back(static_cast(ext_cp)); + } else if constexpr (sizeof (wchar_t) == 2) { + if (ext_cp <= 0xFFFF) { + result.push_back(static_cast(ext_cp)); + } else { + result.push_back(static_cast(hi_cp)); + result.push_back(static_cast(lo_cp)); + } } else { - result.push_back(hi_cp); - result.push_back(lo_cp); + static_assert(!sizeof(typename string_t::value_type), "Unsupported wchar"); } } else {