From 78890b3f9ceac28d74c3382767f9c7bdf16b4542 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 14 Jul 2016 11:11:22 -0700 Subject: [PATCH] fbstring: Fix std::hash specializations for non-char types Summary: Closes https://github.com/facebook/folly/pull/407 Reviewed By: ot Differential Revision: D3428571 Pulled By: Orvid fbshipit-source-id: 0b82afae2df24803250e8d6005e2e59bbc8348c9 --- folly/FBString.h | 2 +- folly/test/FBStringTest.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/folly/FBString.h b/folly/FBString.h index 0c8273e5..9a50e299 100644 --- a/folly/FBString.h +++ b/folly/FBString.h @@ -2441,7 +2441,7 @@ _GLIBCXX_END_NAMESPACE_VERSION #define FOLLY_FBSTRING_HASH1(T) \ template <> \ struct hash< ::folly::basic_fbstring > { \ - size_t operator()(const ::folly::fbstring& s) const { \ + size_t operator()(const ::folly::basic_fbstring& s) const { \ return ::folly::hash::fnv32_buf(s.data(), s.size()); \ } \ }; diff --git a/folly/test/FBStringTest.cpp b/folly/test/FBStringTest.cpp index e8644482..1bc36391 100644 --- a/folly/test/FBStringTest.cpp +++ b/folly/test/FBStringTest.cpp @@ -1287,6 +1287,18 @@ TEST(FBString, testHash) { EXPECT_NE(hashfunc(a), hashfunc(b)); } +TEST(FBString, testHashChar16) { + using u16fbstring = basic_fbstring; + u16fbstring a; + u16fbstring b; + a.push_back(0); + a.push_back(1); + b.push_back(0); + b.push_back(2); + std::hash hashfunc; + EXPECT_NE(hashfunc(a), hashfunc(b)); +} + TEST(FBString, testFrontBack) { fbstring str("hello"); EXPECT_EQ(str.front(), 'h'); -- 2.34.1