From 8adcaffcc29dfdebdcd3024f8fddd991145a1dc9 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 16 Sep 2022 19:16:45 +0300 Subject: [PATCH] Update integral hashing to use hash_mix --- include/boost/container_hash/hash.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/boost/container_hash/hash.hpp b/include/boost/container_hash/hash.hpp index c2e0cbe..92c8d9a 100644 --- a/include/boost/container_hash/hash.hpp +++ b/include/boost/container_hash/hash.hpp @@ -102,8 +102,8 @@ namespace boost { std::size_t seed = 0; - seed ^= static_cast( v >> 32 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( v >> 32 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); return seed; } @@ -115,10 +115,10 @@ namespace boost { std::size_t seed = 0; - seed ^= static_cast( v >> 96 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v >> 64 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v >> 32 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( v >> 96 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v >> 64 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v >> 32 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); return seed; } @@ -130,8 +130,8 @@ namespace boost { std::size_t seed = 0; - seed ^= static_cast( v >> 64 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( v >> 64 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); return seed; }