Refactor remove_invalid_xml_chars to use correct types directly

This commit is contained in:
louiz’
2016-10-27 01:37:55 +02:00
parent 6d65e9527e
commit ac61450184
+4 -5
View File
@@ -75,13 +75,12 @@ namespace utils
std::string remove_invalid_xml_chars(const std::string& original) std::string remove_invalid_xml_chars(const std::string& original)
{ {
// The given string MUST be a valid utf-8 string // The given string MUST be a valid utf-8 string
unsigned char* res = new unsigned char[original.size()]; std::vector<char> res(original.size(), '\0');
const auto sg = utils::make_scope_guard([&res](auto&&) { delete[] res;});
// pointer where we write valid chars // pointer where we write valid chars
unsigned char* r = res; char* r = res.data();
const unsigned char* str = reinterpret_cast<const unsigned char*>(original.c_str()); const char* str = original.c_str();
std::bitset<20> codepoint; std::bitset<20> codepoint;
while (*str) while (*str)
@@ -140,7 +139,7 @@ namespace utils
else else
throw std::runtime_error("Invalid UTF-8 passed to remove_invalid_xml_chars"); throw std::runtime_error("Invalid UTF-8 passed to remove_invalid_xml_chars");
} }
return {reinterpret_cast<char*>(res), static_cast<size_t>(r-res)}; return {res.data(), static_cast<size_t>(r - res.data())};
} }
std::string convert_to_utf8(const std::string& str, const char* charset) std::string convert_to_utf8(const std::string& str, const char* charset)