Commit facee93a authored by Russ Cox's avatar Russ Cox

runtime: fix float64 hash on 32-bit machine

Multiplying by the low 32 bits was a bad idea
no matter what, but it was a particularly unfortunate
choice because those bits are 0 for small integer values.

Fixes #2883.

R=ken2
CC=golang-dev
https://golang.org/cl/5634047
parent 48bd1391
......@@ -271,7 +271,7 @@ runtime·f64hash(uintptr *h, uintptr s, void *a)
else {
u = *(uint64*)a;
if(sizeof(uintptr) == 4)
hash = ((uint32)(u>>32) ^ 2860486313) * (uint32)u;
hash = ((uint32)(u>>32) * 3267000013UL) ^ (uint32)u;
else
hash = u;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment