Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3143)

Unified Diff: base/hash.h

Issue 181643004: Moved SuperFastHash function from base/hash.cc to base/third_party. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error (-Wsign-compare). Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/base.gypi ('k') | base/hash.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/hash.h
diff --git a/base/hash.h b/base/hash.h
index cf8ea3a26e49475a9187d7005cc17b0f470609f6..0b9c9f6bf0cf272d712d4de2458d215daa1808bb 100644
--- a/base/hash.h
+++ b/base/hash.h
@@ -5,25 +5,33 @@
#ifndef BASE_HASH_H_
#define BASE_HASH_H_
+#include <limits>
#include <string>
#include "base/base_export.h"
#include "base/basictypes.h"
+#include "base/logging.h"
namespace base {
-// From http://www.azillionmonkeys.com/qed/hash.html
-// This is the hash used on WebCore/platform/stringhash
Noel Gordon 2014/03/04 08:39:52 Late to this party, but why did the reference to t
Matt Giuca 2014/03/04 23:47:31 Ah, is that where it is. I did a brief search for
-BASE_EXPORT uint32 SuperFastHash(const char * data, int len);
+// WARNING: This hash function should not be used for any cryptographic purpose.
+BASE_EXPORT uint32 SuperFastHash(const char* data, int len);
+// Computes the hash of a string |key| of a given |length|. |key| does not need
Noel Gordon 2014/03/04 08:39:52 "hash of a string"? |key| does not appear to be a
Matt Giuca 2014/03/04 23:47:31 Yeah, all correct. I was just trying to be quite c
+// to be null-terminated, and may contain null bytes.
+// WARNING: This hash function should not be used for any cryptographic purpose.
inline uint32 Hash(const char* key, size_t length) {
+ if (length > static_cast<size_t>(std::numeric_limits<int>::max())) {
+ NOTREACHED();
+ return 0;
+ }
return SuperFastHash(key, static_cast<int>(length));
}
+// Computes the hash of a string |key|.
+// WARNING: This hash function should not be used for any cryptographic purpose.
inline uint32 Hash(const std::string& key) {
- if (key.empty())
- return 0;
- return SuperFastHash(key.data(), static_cast<int>(key.size()));
+ return Hash(key.data(), key.size());
}
} // namespace base
« no previous file with comments | « base/base.gypi ('k') | base/hash.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698