X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libhashkit%2Fmurmur.c;h=78d7f1933b5e283804e6238bb6cd53bb22e8e16e;hb=16c2fe9cc04a3f15fe56d3be2f3be19a1d731fb2;hp=cd5e6419ab001c5cfdd3800e118e723585c8355b;hpb=c67da677fe0944d3d2d3ff46e65fc3bc775404ae;p=m6w6%2Flibmemcached diff --git a/libhashkit/murmur.c b/libhashkit/murmur.c index cd5e6419..78d7f193 100644 --- a/libhashkit/murmur.c +++ b/libhashkit/murmur.c @@ -1,4 +1,4 @@ -/* +/* "Murmur" hash provided by Austin, tanjent@gmail.com http://murmurhash.googlepages.com/ @@ -17,9 +17,9 @@ #include "common.h" -uint32_t hashkit_murmur(const char *key, size_t length) +uint32_t hashkit_murmur(const char *key, size_t length, void *context) { - /* + /* 'm' and 'r' are mixing constants generated offline. They're not really 'magic', they just happen to work well. */ @@ -36,16 +36,17 @@ uint32_t hashkit_murmur(const char *key, size_t length) // Mix 4 bytes at a time into the hash const unsigned char * data= (const unsigned char *)key; + (void)context; while(length >= 4) { unsigned int k = *(unsigned int *)data; - k *= m; - k ^= k >> r; - k *= m; + k *= m; + k ^= k >> r; + k *= m; - h *= m; + h *= m; h ^= k; data += 4; @@ -63,9 +64,9 @@ uint32_t hashkit_murmur(const char *key, size_t length) default: break; }; - /* + /* Do a few final mixes of the hash to ensure the last few bytes are - well-incorporated. + well-incorporated. */ h ^= h >> 13;