1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-04-19 21:02:17 +03:00

Fixed id ostream operator to print human readable ids

This commit is contained in:
Teemu Ollakka 2022-01-03 11:19:58 +02:00
parent 6d0b37daaf
commit bccb9997f2
2 changed files with 14 additions and 2 deletions

View File

@ -54,9 +54,12 @@ std::ostream& wsrep::operator<<(std::ostream& os, const wsrep::id& id)
{ {
const char* ptr(static_cast<const char*>(id.data())); const char* ptr(static_cast<const char*>(id.data()));
size_t size(id.size()); size_t size(id.size());
if (static_cast<size_t>(std::count_if(ptr, ptr + size, ::isalnum)) == size) if (static_cast<size_t>(
std::count_if(ptr, ptr + size,
[](char c) { return (::isalnum(c) || c == '\0'); }))
== size)
{ {
return (os << std::string(ptr, size)); return (os << std::string(ptr, ::strnlen(ptr, size)));
} }
else else
{ {

View File

@ -37,6 +37,15 @@ BOOST_AUTO_TEST_CASE(id_test_uuid)
} }
BOOST_AUTO_TEST_CASE(id_test_string) BOOST_AUTO_TEST_CASE(id_test_string)
{
std::string id_str("node1");
wsrep::id id(id_str);
std::ostringstream os;
os << id;
BOOST_REQUIRE(id_str == os.str());
}
BOOST_AUTO_TEST_CASE(id_test_string_max)
{ {
std::string id_str("1234567890123456"); std::string id_str("1234567890123456");
wsrep::id id(id_str); wsrep::id id(id_str);