diff options
author | luigi1111 <luigi1111w@gmail.com> | 2020-04-04 12:42:50 -0500 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2020-04-04 12:42:50 -0500 |
commit | 292e2d8f28c0925d62cba81a1f4512724ae73d54 (patch) | |
tree | d08cda99279c0fa5ec9fc991aa1ac478372a7980 | |
parent | Merge pull request #6334 (diff) | |
parent | wipeable_string: split - treat CR, LF and Tabs as separators (diff) | |
download | monero-292e2d8f28c0925d62cba81a1f4512724ae73d54.tar.xz |
Merge pull request #6335
0078ce7 wipeable_string: split - treat CR, LF and Tabs as separators (xiphon)
-rw-r--r-- | contrib/epee/src/wipeable_string.cpp | 7 | ||||
-rw-r--r-- | tests/unit_tests/wipeable_string.cpp | 1 |
2 files changed, 5 insertions, 3 deletions
diff --git a/contrib/epee/src/wipeable_string.cpp b/contrib/epee/src/wipeable_string.cpp index 4209b71bf..4928db172 100644 --- a/contrib/epee/src/wipeable_string.cpp +++ b/contrib/epee/src/wipeable_string.cpp @@ -188,13 +188,14 @@ void wipeable_string::split(std::vector<wipeable_string> &fields) const while (len--) { const char c = *ptr++; - if (c != ' ') + const bool space_prev = space; + space = std::isspace(c); + if (!space) { - if (space) + if (space_prev) fields.push_back({}); fields.back().push_back(c); } - space = c == ' '; } } diff --git a/tests/unit_tests/wipeable_string.cpp b/tests/unit_tests/wipeable_string.cpp index 44e050c5c..9911bd6f4 100644 --- a/tests/unit_tests/wipeable_string.cpp +++ b/tests/unit_tests/wipeable_string.cpp @@ -182,6 +182,7 @@ TEST(wipeable_string, split) ASSERT_TRUE(check_split(" foo bar baz ", {"foo", "bar", "baz"})); ASSERT_TRUE(check_split(" foo bar baz", {"foo", "bar", "baz"})); ASSERT_TRUE(check_split("foo bar baz ", {"foo", "bar", "baz"})); + ASSERT_TRUE(check_split("\tfoo\n bar\r\nbaz", {"foo", "bar", "baz"})); } TEST(wipeable_string, parse_hexstr) |