projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Final bits for options in parser for behaviors.
[awesomized/libmemcached]
/
libhashkit
/
hsieh.c
diff --git
a/libhashkit/hsieh.c
b/libhashkit/hsieh.c
index 9060bba030e2f40441f91f58446fb59e38227443..cb5af8aec74524540fd97afb2b1bac0ffd797c07 100644
(file)
--- a/
libhashkit/hsieh.c
+++ b/
libhashkit/hsieh.c
@@
-17,13
+17,13
@@
+(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;
if (key_length <= 0 || key == NULL)
{
uint32_t hash = 0, tmp;
int rem;
if (key_length <= 0 || key == NULL)
- return
0
;
+ return
EXIT_SUCCESS
;
rem = key_length & 3;
key_length >>= 2;
rem = key_length & 3;
key_length >>= 2;
@@
-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 */