mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-10 16:24:04 +00:00
Do unsigned char comparisons in StringRef::compare_lower to be more consistent with compare in corner cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112185 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
01b1e1c958
commit
0043e35b82
@ -31,14 +31,14 @@ static bool ascii_isdigit(char x) {
|
|||||||
/// compare_lower - Compare strings, ignoring case.
|
/// compare_lower - Compare strings, ignoring case.
|
||||||
int StringRef::compare_lower(StringRef RHS) const {
|
int StringRef::compare_lower(StringRef RHS) const {
|
||||||
for (size_t I = 0, E = min(Length, RHS.Length); I != E; ++I) {
|
for (size_t I = 0, E = min(Length, RHS.Length); I != E; ++I) {
|
||||||
char LHC = ascii_tolower(Data[I]);
|
unsigned char LHC = ascii_tolower(Data[I]);
|
||||||
char RHC = ascii_tolower(RHS.Data[I]);
|
unsigned char RHC = ascii_tolower(RHS.Data[I]);
|
||||||
if (LHC != RHC)
|
if (LHC != RHC)
|
||||||
return LHC < RHC ? -1 : 1;
|
return LHC < RHC ? -1 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Length == RHS.Length)
|
if (Length == RHS.Length)
|
||||||
return 0;
|
return 0;
|
||||||
return Length < RHS.Length ? -1 : 1;
|
return Length < RHS.Length ? -1 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ int StringRef::compare_numeric(StringRef RHS) const {
|
|||||||
return Data[I] < RHS.Data[I] ? -1 : 1;
|
return Data[I] < RHS.Data[I] ? -1 : 1;
|
||||||
}
|
}
|
||||||
if (Length == RHS.Length)
|
if (Length == RHS.Length)
|
||||||
return 0;
|
return 0;
|
||||||
return Length < RHS.Length ? -1 : 1;
|
return Length < RHS.Length ? -1 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +53,14 @@ TEST(StringRefTest, StringOps) {
|
|||||||
EXPECT_EQ( 1, StringRef("aab").compare("aaa"));
|
EXPECT_EQ( 1, StringRef("aab").compare("aaa"));
|
||||||
EXPECT_EQ(-1, StringRef("aab").compare("aabb"));
|
EXPECT_EQ(-1, StringRef("aab").compare("aabb"));
|
||||||
EXPECT_EQ( 1, StringRef("aab").compare("aa"));
|
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(-1, StringRef("aab").compare_numeric("aad"));
|
||||||
EXPECT_EQ( 0, StringRef("aab").compare_numeric("aab"));
|
EXPECT_EQ( 0, StringRef("aab").compare_numeric("aab"));
|
||||||
|
Loading…
Reference in New Issue
Block a user