diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-09-20 14:05:43 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-09-20 14:05:43 +0300 |
commit | 042c4f09e34157522692d6f99f5c51bc04e8f27a (patch) | |
tree | fe25080062563298513d4ef977da025a39dd5b7e | |
parent | 378441b559615cc96150e64137ae2ce02d23d2f2 (diff) | |
download | mv-042c4f09e34157522692d6f99f5c51bc04e8f27a.tar.gz mv-042c4f09e34157522692d6f99f5c51bc04e8f27a.tar.bz2 mv-042c4f09e34157522692d6f99f5c51bc04e8f27a.tar.xz mv-042c4f09e34157522692d6f99f5c51bc04e8f27a.zip |
fix possible issue in string comparison
-rw-r--r-- | src/utils/stringutils.cpp | 2 | ||||
-rw-r--r-- | src/utils/stringutils_unittest.cc | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index 680d8e44d..18a3fba12 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -129,7 +129,7 @@ int compareStrI(const std::string &a, const std::string &b) std::string::const_iterator itB = b.begin(); const std::string::const_iterator endB = b.end(); - for (; itA < endA, itB < endB; ++itA, ++itB) + for (; itA < endA && itB < endB; ++itA, ++itB) { const int comp = tolower(*itA) - tolower(*itB); if (comp) diff --git a/src/utils/stringutils_unittest.cc b/src/utils/stringutils_unittest.cc index 8f28f5c10..06ddaefd4 100644 --- a/src/utils/stringutils_unittest.cc +++ b/src/utils/stringutils_unittest.cc @@ -144,7 +144,11 @@ TEST(stringuntils, compareStrI1) EXPECT_TRUE(compareStrI(str1, str2) < 0); str1 = "test"; - str2 = "aest1"; + str2 = "aest1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + EXPECT_TRUE(compareStrI(str1, str2) > 0); + + str1 = "testaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + str2 = "testaa"; EXPECT_TRUE(compareStrI(str1, str2) > 0); } |