Fix broken trim function if only one character was left after whitespace

This commit is contained in:
baldurk
2020-05-23 00:20:15 +01:00
parent aba76af848
commit b8c9a30d7a
2 changed files with 12 additions and 5 deletions
+5 -5
View File
@@ -819,17 +819,17 @@ public:
while(start < sz && IS_WHITESPACE(str[start]))
start++;
size_t end = sz - 1;
while(end > start && IS_WHITESPACE(str[end]))
end--;
// no non-whitespace characters, become the empty string
if(start >= end)
if(start == sz)
{
clear();
return;
}
size_t end = sz - 1;
while(end > start && IS_WHITESPACE(str[end]))
end--;
erase(end + 1, ~0U);
erase(0, start);
}
+7
View File
@@ -1161,6 +1161,13 @@ TEST_CASE("Test string type", "[basictypes][string]")
CHECK(rdcstr(" Foo\nbar").trimmed() == "Foo\nbar");
CHECK(rdcstr("FOO BAR ").trimmed() == "FOO BAR");
CHECK(rdcstr("FOO BAR \t\n").trimmed() == "FOO BAR");
CHECK(rdcstr("1").trimmed() == "1");
CHECK(rdcstr(" 1 ").trimmed() == "1");
CHECK(rdcstr(" 1").trimmed() == "1");
CHECK(rdcstr("1 ").trimmed() == "1");
CHECK(rdcstr("1\n ").trimmed() == "1");
CHECK(rdcstr("\n1\n ").trimmed() == "1");
CHECK(rdcstr(" \n\t1\n ").trimmed() == "1");
CHECK(rdcstr("").trimmed() == "");
CHECK(rdcstr(" ").trimmed() == "");
CHECK(rdcstr(" \t \n ").trimmed() == "");