utf8_utils: use string_view

Change-Id: Ib939740608d112626ccce0228726e758b07d22a3
This commit is contained in:
Adrien Béraud
2022-10-20 19:40:33 -04:00
parent fe058538fb
commit d1d63e3517
3 changed files with 10 additions and 16 deletions

View File

@ -109,14 +109,13 @@ parseDisplayName(const pjsip_name_addr* sip_name_addr)
if (not sip_name_addr->display.ptr or not sip_name_addr->display.slen)
return {};
std::string displayName {sip_name_addr->display.ptr,
static_cast<size_t>(sip_name_addr->display.slen)};
auto displayName = as_view(sip_name_addr->display);
// Filter out invalid UTF-8 characters to avoid getting kicked from D-Bus
if (not utf8_validate(displayName))
return utf8_make_valid(displayName);
return displayName;
return std::string(displayName);
}
std::string

View File

@ -237,21 +237,19 @@ utf8_validate_c_str(const char* str, ssize_t max_len, const char** end)
}
bool
utf8_validate(const std::string& str)
utf8_validate(std::string_view str)
{
const char* p;
p = fast_validate(str.c_str());
const char* p = fast_validate_len(str.data(), str.size());
return (*p == '\0');
}
std::string
utf8_make_valid(const std::string& name)
utf8_make_valid(std::string_view name)
{
ssize_t remaining_bytes = name.size();
ssize_t valid_bytes;
const char* remainder = name.c_str();
const char* remainder = name.data();
const char* invalid;
char* str = NULL;
char* pos;
@ -289,7 +287,7 @@ utf8_make_valid(const std::string& name)
pos += remaining_bytes;
std::string answer(str, pos - str);
assert(utf8_validate_c_str(answer.c_str(), -1, NULL));
assert(utf8_validate(answer));
delete[] str;

View File

@ -20,8 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef H_UTF8_UTILS
#define H_UTF8_UTILS
#pragma once
#include <cstdlib>
#include <string>
@ -41,7 +40,7 @@ namespace jami {
* Returns: true if the text was valid UTF-8
*/
bool utf8_validate(const std::string& str);
bool utf8_validate(std::string_view str);
/**
* utf8_make_valid:
@ -53,8 +52,6 @@ bool utf8_validate(const std::string& str);
*
* Returns: a valid utf8 string.
*/
std::string utf8_make_valid(const std::string& name);
std::string utf8_make_valid(std::string_view str);
} // namespace jami
#endif // H_UTF8_UTILS