# HG changeset patch # User Sebastien Jodogne # Date 1512507489 -3600 # Node ID 330349d712f992c70f0893db8a2280c6d624572b # Parent 67c01a6f151ea7cdf27997621ee3d6c4f6c1775c fix Toolbox::IsAsciiString diff -r 67c01a6f151e -r 330349d712f9 Core/Toolbox.cpp --- a/Core/Toolbox.cpp Tue Dec 05 12:43:28 2017 +0100 +++ b/Core/Toolbox.cpp Tue Dec 05 21:58:09 2017 +0100 @@ -534,7 +534,7 @@ for (size_t i = 0; i < size; i++, p++) { - if (*p > 127 || (*p != 0 && iscntrl(*p))) + if (*p > 127 || *p == 0 || iscntrl(*p)) { return false; } @@ -544,6 +544,12 @@ } + bool Toolbox::IsAsciiString(const std::string& s) + { + return IsAsciiString(s.c_str(), s.size()); + } + + std::string Toolbox::ConvertToAscii(const std::string& source) { std::string result; diff -r 67c01a6f151e -r 330349d712f9 Core/Toolbox.h --- a/Core/Toolbox.h Tue Dec 05 12:43:28 2017 +0100 +++ b/Core/Toolbox.h Tue Dec 05 21:58:09 2017 +0100 @@ -152,6 +152,8 @@ bool IsAsciiString(const void* data, size_t size); + bool IsAsciiString(const std::string& s); + std::string ConvertToAscii(const std::string& source); std::string StripSpaces(const std::string& source); diff -r 67c01a6f151e -r 330349d712f9 UnitTestsSources/UnitTestsMain.cpp --- a/UnitTestsSources/UnitTestsMain.cpp Tue Dec 05 12:43:28 2017 +0100 +++ b/UnitTestsSources/UnitTestsMain.cpp Tue Dec 05 21:58:09 2017 +0100 @@ -461,6 +461,20 @@ } +TEST(Toolbox, IsAsciiString) +{ + std::string s = "Hello 12 /"; + ASSERT_EQ(10u, s.size()); + ASSERT_TRUE(Toolbox::IsAsciiString(s)); + ASSERT_TRUE(Toolbox::IsAsciiString(s.c_str(), 10)); + ASSERT_FALSE(Toolbox::IsAsciiString(s.c_str(), 11)); // Taking the trailing hidden '\0' + + s[2] = '\0'; + ASSERT_EQ(10u, s.size()); + ASSERT_FALSE(Toolbox::IsAsciiString(s)); +} + + #if defined(__linux__) TEST(OrthancInitialization, AbsoluteDirectory) {