summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-09-20 14:05:43 +0300
committerAndrei Karas <akaras@inbox.ru>2013-09-20 14:05:43 +0300
commit042c4f09e34157522692d6f99f5c51bc04e8f27a (patch)
treefe25080062563298513d4ef977da025a39dd5b7e
parent378441b559615cc96150e64137ae2ce02d23d2f2 (diff)
downloadmv-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.cpp2
-rw-r--r--src/utils/stringutils_unittest.cc6
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);
}