StringRef::compare_numeric also differed from StringRef::compare for characters ...
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 26 Aug 2010 15:25:35 +0000 (15:25 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 26 Aug 2010 15:25:35 +0000 (15:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112189 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/StringRef.cpp
unittests/ADT/StringRefTest.cpp

index c33ca6a2ebf678357d39951513257483d29e68a2..46f26b242aac36f843234d51d3a36a320ab4d9eb 100644 (file)
@@ -59,7 +59,7 @@ int StringRef::compare_numeric(StringRef RHS) const {
           break;
       }
     }
-    return Data[I] < RHS.Data[I] ? -1 : 1;
+    return (unsigned char)Data[I] < (unsigned char)RHS.Data[I] ? -1 : 1;
   }
   if (Length == RHS.Length)
     return 0;
index de5c349cd6014896d9e0682dd6869a3de74c697b..7e4d0dcd413fcc4fa7588be160e01a4aedbaded0 100644 (file)
@@ -72,6 +72,7 @@ TEST(StringRefTest, StringOps) {
   EXPECT_EQ( 0, StringRef("10a").compare_numeric("10a"));
   EXPECT_EQ( 1, StringRef("2").compare_numeric("1"));
   EXPECT_EQ( 0, StringRef("llvm_v1i64_ty").compare_numeric("llvm_v1i64_ty"));
+  EXPECT_EQ( 1, StringRef("\xFF").compare_numeric("\1"));
 }
 
 TEST(StringRefTest, Operators) {