From 0061ab109ff46bd19d718df6c2fe387085d1148c Mon Sep 17 00:00:00 2001 From: pylee Date: Thu, 12 Oct 2023 16:15:49 -0700 Subject: [PATCH 1/3] Issue #1874 Cast to unsigned char for isspace. Signed-off-by: pylee --- src/utils/StringUtils.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/StringUtils.h b/src/utils/StringUtils.h index 78721f1121..cc1cf4cd43 100644 --- a/src/utils/StringUtils.h +++ b/src/utils/StringUtils.h @@ -106,7 +106,7 @@ inline std::string LeftTrim(std::string str, char c) // Starting from the left, trim all the space characters i.e. space, tabulation, etc. inline std::string LeftTrim(std::string str) { - const auto it = std::find_if(str.begin(), str.end(), [](char ch) { return !std::isspace(ch); }); + const auto it = std::find_if(str.begin(), str.end(), [](char ch) { return !std::isspace(static_cast(ch)); }); str.erase(str.begin(), it); return str; } @@ -123,7 +123,7 @@ inline std::string RightTrim(std::string str, char c) inline std::string RightTrim(std::string str) { const auto it = - std::find_if(str.rbegin(), str.rend(), [](char ch) { return !std::isspace(ch); }); + std::find_if(str.rbegin(), str.rend(), [](char ch) { return !std::isspace(static_cast(ch)); }); str.erase(it.base(), str.end()); return str; } From f793dbc28af288894e0d3c7be744488921f41040 Mon Sep 17 00:00:00 2001 From: pylee Date: Fri, 20 Oct 2023 15:50:26 -0700 Subject: [PATCH 2/3] Add unit test. Signed-off-by: pylee --- tests/utils/StringUtils_tests.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/utils/StringUtils_tests.cpp b/tests/utils/StringUtils_tests.cpp index fb9cb79dea..cdbc2bbbfb 100644 --- a/tests/utils/StringUtils_tests.cpp +++ b/tests/utils/StringUtils_tests.cpp @@ -50,6 +50,11 @@ OCIO_ADD_TEST(StringUtils, trim) const std::string str = StringUtils::Trim(ref); OCIO_CHECK_EQUAL(str, "lOwEr 1*& ctfG"); } + + { + constexpr char ref2[]{ -1, -2, -3, '\0' }; + const std::string str = StringUtils::Trim(ref2); + } } OCIO_ADD_TEST(StringUtils, split) From 65c4059a9edd364f7e6609191a600df98cc8bf1d Mon Sep 17 00:00:00 2001 From: pylee Date: Mon, 30 Oct 2023 22:40:04 -0700 Subject: [PATCH 3/3] Add test comment as suggested in code review. Signed-off-by: pylee --- tests/utils/StringUtils_tests.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils/StringUtils_tests.cpp b/tests/utils/StringUtils_tests.cpp index cdbc2bbbfb..0154a4fc18 100644 --- a/tests/utils/StringUtils_tests.cpp +++ b/tests/utils/StringUtils_tests.cpp @@ -52,6 +52,7 @@ OCIO_ADD_TEST(StringUtils, trim) } { + // Test that no assert happens when the Trim argument is not an unsigned char (see issue #1874). constexpr char ref2[]{ -1, -2, -3, '\0' }; const std::string str = StringUtils::Trim(ref2); }