diff --git a/src/probabilistic/Hasher.cc b/src/probabilistic/Hasher.cc index b5151cabeb..150be57224 100644 --- a/src/probabilistic/Hasher.cc +++ b/src/probabilistic/Hasher.cc @@ -118,16 +118,19 @@ Hasher::digest UHF::hash(const void* x, size_t n) const return outdigest; } - unsigned char d[16]; - MD5(reinterpret_cast(x), n, d); + union { + unsigned char d[16]; + Hasher::digest rval; + } u; + + MD5(reinterpret_cast(x), n, u.d); const unsigned char* s = reinterpret_cast(&seed); for ( size_t i = 0; i < 16; ++i ) - d[i] ^= s[i % sizeof(seed)]; + u.d[i] ^= s[i % sizeof(seed)]; - MD5(d, 16, d); - - return *reinterpret_cast(d); + MD5(u.d, 16, u.d); + return u.rval; } DefaultHasher::DefaultHasher(size_t k, Hasher::seed_t seed)