Fix MurmurHash implementation to really be unaligned (#7482)
authorsfan5 <sfan5@live.de>
Mon, 25 Jun 2018 23:12:09 +0000 (01:12 +0200)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Thu, 28 Jun 2018 17:11:01 +0000 (19:11 +0200)
src/util/numeric.cpp

index e6a9cb75ebddc549631867c17a0b8c2bd5c65e09..9127527de16eacde606a378f7de25f2d5e724a97 100644 (file)
@@ -60,13 +60,13 @@ u64 murmur_hash_64_ua(const void *key, int len, unsigned int seed)
        const int r = 47;
        u64 h = seed ^ (len * m);
 
-       const u64 *data = (const u64 *)key;
-       const u64 *end = data + (len / 8);
+       const u8 *data = (const u8 *)key;
+       const u8 *end = data + (len / 8) * 8;
 
        while (data != end) {
                u64 k;
                memcpy(&k, data, sizeof(u64));
-               data++;
+               data += sizeof(u64);
 
                k *= m;
                k ^= k >> r;