X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmurmur_hash.c;h=7275aa348e253f286c5aac52a18b5cf9ebfbadb3;hb=901d63226e7c2385b6f169f9f09007f65a0c2fe4;hp=ce28ec389cd08a571dd144e21bea3e9479817c13;hpb=01de4afa83a6f906eb666ff23a0888fbb5f4005f;p=awesomized%2Flibmemcached diff --git a/libmemcached/murmur_hash.c b/libmemcached/murmur_hash.c index ce28ec38..7275aa34 100644 --- a/libmemcached/murmur_hash.c +++ b/libmemcached/murmur_hash.c @@ -6,33 +6,29 @@ #define MIX(h,k,m) { k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; } -uint32_t murmur_hash(char *key, size_t length) +uint32_t murmur_hash(const char *key, size_t length) { const uint32_t m= 0x5bd1e995; const int r= 16; uint32_t h= length * m; + uint32_t k = 0; while(length >= 4) { - uint32_t k = *(uint32_t*)key; + k = *(uint32_t*)key; MIX(h,k,m); key += 4; length -= 4; } - if (length) + switch(length) { - uint32_t k= 0; - - switch(length) - { - case 3: k += key[2] << 16; - case 2: k += key[1] << 8; - case 1: k += key[0]; - }; - MIX(h,k,m); - } + case 3: k += key[2] << 16; + case 2: k += key[1] << 8; + case 1: k += key[0]; + MIX(h,k,m); + }; h *= m; h ^= h >> 10;