avoid std::_Hash_impl
[folly.git] / folly / wangle / acceptor / DomainNameMisc.h
index 41c4c741f4d3c76119687f72f013918af7578c9b..4560a71633bd85ba4ca06ed53fc835a957673c09 100644 (file)
@@ -57,14 +57,11 @@ struct dn_char_traits : public std::char_traits<char> {
 typedef std::basic_string<char, dn_char_traits> DNString;
 
 struct DNStringHash : public std::hash<std::string> {
-  size_t operator()(const DNString& s) const noexcept {
-    size_t h = static_cast<size_t>(0xc70f6907UL);
-    const char* d = s.data();
-    for (size_t i = 0; i < s.length(); ++i) {
-      char a = ::tolower(*d++);
-      h = std::_Hash_impl::hash(&a, sizeof(a), h);
-    }
-    return h;
+  size_t operator()(const DNString& s1) const noexcept {
+    std::string s2(s1.data(), s1.size());
+    for (char& c : s2)
+      c = ::tolower(c);
+    return std::hash<std::string>()(s2);
   }
 };