Fixed extra null bytes at the end of collations

custom
ailurux 1 year ago
parent c1db38ba42
commit d42de6b122
  1. 16
      src/locale/collation.cpp

@ -86,16 +86,12 @@ GLibCollator::~GLibCollator() {
} }
auto GLibCollator::Transform(const std::string& in) -> std::string { auto GLibCollator::Transform(const std::string& in) -> std::string {
char dest[256]; size_t size = glib_strxfrm(NULL, in.c_str(), 0, locale_data_.get());
size_t size = glib_strxfrm(dest, in.c_str(), 256, locale_data_.get()); char* dest = new char[size + 1]{0};
if (size >= 256) { glib_strxfrm(dest, in.c_str(), size, locale_data_.get());
char* larger_dest = new char[size + 1]{0}; std::string out{dest, strnlen(dest, size)};
glib_strxfrm(larger_dest, in.c_str(), size, locale_data_.get()); delete[] dest;
std::string out{larger_dest, size}; return out;
delete[] larger_dest;
return out;
}
return {dest, size};
} }
} // namespace locale } // namespace locale

Loading…
Cancel
Save