From 9bf0380a54f221de9c598c54d9a0554b893de64c Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 26 Aug 2010 15:25:35 +0000 Subject: [PATCH] StringRef::compare_numeric also differed from StringRef::compare for characters > 127. llvm-svn: 112189 --- llvm/lib/Support/StringRef.cpp | 2 +- llvm/unittests/ADT/StringRefTest.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm/lib/Support/StringRef.cpp b/llvm/lib/Support/StringRef.cpp index c33ca6a2ebf6..46f26b242aac 100644 --- a/llvm/lib/Support/StringRef.cpp +++ b/llvm/lib/Support/StringRef.cpp @@ -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; diff --git a/llvm/unittests/ADT/StringRefTest.cpp b/llvm/unittests/ADT/StringRefTest.cpp index de5c349cd601..7e4d0dcd413f 100644 --- a/llvm/unittests/ADT/StringRefTest.cpp +++ b/llvm/unittests/ADT/StringRefTest.cpp @@ -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) {