diff --git a/src/pike_memory.c b/src/pike_memory.c index 2b477350e01e1f6013938519104978a7ba75e462..43e352fc11df1fcf9a494c2a00af6bece6880d67 100644 --- a/src/pike_memory.c +++ b/src/pike_memory.c @@ -154,8 +154,14 @@ unsigned INT32 hashmem(const unsigned char *a,INT32 len,INT32 mlen) #else for(mlen>>=3;--mlen>=0;) { - ret^=(ret<<7)+((((((*(a++)<<3)+*(a++))<<4)+*(a++))<<5)+*(a++)); - ret^=(ret>>6)+((((((*(a++)<<3)+*(a++))<<4)+*(a++))<<5)+*(a++)); + ret^=(ret<<7)+((((((*(a)<<3)+*(a+1))<<4)+*(a+2))<<5)+*(a+3)); + ret^=(ret>>6)+((((((*(a+4)<<3)+*(a+5))<<4)+*(a+6))<<5)+*(a+7)); + a+=8; + + /* + * ret^=(ret<<7)+((((((*(a++)<<3)+*(a++))<<4)+*(a++))<<5)+*(a++)); + * ret^=(ret>>6)+((((((*(a++)<<3)+*(a++))<<4)+*(a++))<<5)+*(a++)); + */ } #endif return ret;