Fix HashString's Bernstein hash to use unsigned chars, as is usually done.
authorWill Dietz <wdietz2@illinois.edu>
Thu, 30 Aug 2012 00:30:21 +0000 (00:30 +0000)
committerWill Dietz <wdietz2@illinois.edu>
Thu, 30 Aug 2012 00:30:21 +0000 (00:30 +0000)
Changes the hash result for strings containing characters
with values >= 128, such as UTF8 strings (not normal ASCII).

Changed mostly so we match other implementations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162882 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringExtras.h

index 655d884e7baaab2677fb8debe622b0ae65fe7062..36df5acadb4d8631fbbba96a2112b6ad9a3a1a54 100644 (file)
@@ -125,7 +125,7 @@ void SplitString(StringRef Source,
 //   X*33+c -> X*33^c
 static inline unsigned HashString(StringRef Str, unsigned Result = 0) {
   for (unsigned i = 0, e = Str.size(); i != e; ++i)
-    Result = Result * 33 + Str[i];
+    Result = Result * 33 + (unsigned char)Str[i];
   return Result;
 }