From d42de6b12292ead077e79d1edb72b52a39767909 Mon Sep 17 00:00:00 2001 From: ailurux Date: Thu, 9 Nov 2023 16:31:20 +1100 Subject: [PATCH] Fixed extra null bytes at the end of collations --- src/locale/collation.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/locale/collation.cpp b/src/locale/collation.cpp index 31465645..2c7e1d0c 100644 --- a/src/locale/collation.cpp +++ b/src/locale/collation.cpp @@ -86,16 +86,12 @@ GLibCollator::~GLibCollator() { } auto GLibCollator::Transform(const std::string& in) -> std::string { - char dest[256]; - size_t size = glib_strxfrm(dest, in.c_str(), 256, locale_data_.get()); - if (size >= 256) { - char* larger_dest = new char[size + 1]{0}; - glib_strxfrm(larger_dest, in.c_str(), size, locale_data_.get()); - std::string out{larger_dest, size}; - delete[] larger_dest; - return out; - } - return {dest, size}; + size_t size = glib_strxfrm(NULL, in.c_str(), 0, locale_data_.get()); + char* dest = new char[size + 1]{0}; + glib_strxfrm(dest, in.c_str(), size, locale_data_.get()); + std::string out{dest, strnlen(dest, size)}; + delete[] dest; + return out; } } // namespace locale