[llvm-commits] [llvm] r112185 - in /llvm/trunk: lib/Support/StringRef.cpp unittests/ADT/StringRefTest.cpp
Benjamin Kramer
benny.kra at googlemail.com
Thu Aug 26 07:21:08 PDT 2010
Author: d0k
Date: Thu Aug 26 09:21:08 2010
New Revision: 112185
URL: http://llvm.org/viewvc/llvm-project?rev=112185&view=rev
Log:
Do unsigned char comparisons in StringRef::compare_lower to be more consistent with compare in corner cases.
Modified:
llvm/trunk/lib/Support/StringRef.cpp
llvm/trunk/unittests/ADT/StringRefTest.cpp
Modified: llvm/trunk/lib/Support/StringRef.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/StringRef.cpp?rev=112185&r1=112184&r2=112185&view=diff
==============================================================================
--- llvm/trunk/lib/Support/StringRef.cpp (original)
+++ llvm/trunk/lib/Support/StringRef.cpp Thu Aug 26 09:21:08 2010
@@ -31,14 +31,14 @@
/// compare_lower - Compare strings, ignoring case.
int StringRef::compare_lower(StringRef RHS) const {
for (size_t I = 0, E = min(Length, RHS.Length); I != E; ++I) {
- char LHC = ascii_tolower(Data[I]);
- char RHC = ascii_tolower(RHS.Data[I]);
+ unsigned char LHC = ascii_tolower(Data[I]);
+ unsigned char RHC = ascii_tolower(RHS.Data[I]);
if (LHC != RHC)
return LHC < RHC ? -1 : 1;
}
if (Length == RHS.Length)
- return 0;
+ return 0;
return Length < RHS.Length ? -1 : 1;
}
@@ -62,7 +62,7 @@
return Data[I] < RHS.Data[I] ? -1 : 1;
}
if (Length == RHS.Length)
- return 0;
+ return 0;
return Length < RHS.Length ? -1 : 1;
}
Modified: llvm/trunk/unittests/ADT/StringRefTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/StringRefTest.cpp?rev=112185&r1=112184&r2=112185&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/StringRefTest.cpp (original)
+++ llvm/trunk/unittests/ADT/StringRefTest.cpp Thu Aug 26 09:21:08 2010
@@ -53,6 +53,14 @@
EXPECT_EQ( 1, StringRef("aab").compare("aaa"));
EXPECT_EQ(-1, StringRef("aab").compare("aabb"));
EXPECT_EQ( 1, StringRef("aab").compare("aa"));
+ EXPECT_EQ( 1, StringRef("\xFF").compare("\1"));
+
+ EXPECT_EQ(-1, StringRef("AaB").compare_lower("aAd"));
+ EXPECT_EQ( 0, StringRef("AaB").compare_lower("aab"));
+ EXPECT_EQ( 1, StringRef("AaB").compare_lower("AAA"));
+ EXPECT_EQ(-1, StringRef("AaB").compare_lower("aaBb"));
+ EXPECT_EQ( 1, StringRef("AaB").compare_lower("aA"));
+ EXPECT_EQ( 1, StringRef("\xFF").compare_lower("\1"));
EXPECT_EQ(-1, StringRef("aab").compare_numeric("aad"));
EXPECT_EQ( 0, StringRef("aab").compare_numeric("aab"));
More information about the llvm-commits
mailing list