projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Merge in changes to allow for weights on hosts.
[awesomized/libmemcached]
/
libhashkit
/
hsieh.c
diff --git
a/libhashkit/hsieh.c
b/libhashkit/hsieh.c
index 9060bba030e2f40441f91f58446fb59e38227443..35a2e2096c23d5c2f300a9ca877b095cc45aaabd 100644
(file)
--- a/
libhashkit/hsieh.c
+++ b/
libhashkit/hsieh.c
@@
-5,7
+5,7
@@
* http://www.azillionmonkeys.com/qed/hash.html
*/
* http://www.azillionmonkeys.com/qed/hash.html
*/
-#include
"common.h"
+#include
<libhashkit/common.h>
#undef get16bits
#if (defined(__GNUC__) && defined(__i386__))
#undef get16bits
#if (defined(__GNUC__) && defined(__i386__))
@@
-17,7
+17,7
@@
+(uint32_t)(((const uint8_t *)(d))[0]) )
#endif
+(uint32_t)(((const uint8_t *)(d))[0]) )
#endif
-uint32_t hashkit_hsieh(const char *key, size_t key_length)
+uint32_t hashkit_hsieh(const char *key, size_t key_length
, void *context __attribute__((unused))
)
{
uint32_t hash = 0, tmp;
int rem;
{
uint32_t hash = 0, tmp;
int rem;
@@
-43,16
+43,18
@@
uint32_t hashkit_hsieh(const char *key, size_t key_length)
{
case 3: hash += get16bits (key);
hash ^= hash << 16;
{
case 3: hash += get16bits (key);
hash ^= hash << 16;
- hash ^= key[sizeof (uint16_t)] << 18;
+ hash ^=
(uint32_t)
key[sizeof (uint16_t)] << 18;
hash += hash >> 11;
break;
case 2: hash += get16bits (key);
hash ^= hash << 11;
hash += hash >> 17;
break;
hash += hash >> 11;
break;
case 2: hash += get16bits (key);
hash ^= hash << 11;
hash += hash >> 17;
break;
- case 1: hash +=
*key
;
+ case 1: hash +=
(unsigned char)(*key)
;
hash ^= hash << 10;
hash += hash >> 1;
hash ^= hash << 10;
hash += hash >> 1;
+ default:
+ break;
}
/* Force "avalanching" of final 127 bits */
}
/* Force "avalanching" of final 127 bits */