From: Russ Cox Date: Mon, 6 Feb 2012 16:24:34 +0000 (-0500) Subject: runtime: fix float64 hash on 32-bit machine X-Git-Tag: weekly.2012-02-07~41 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=facee93a8627881ae39abda13cba115274fe20cf;p=gostls13.git 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 --- diff --git a/src/pkg/runtime/alg.c b/src/pkg/runtime/alg.c index eec523aad4..e3c42916e9 100644 --- a/src/pkg/runtime/alg.c +++ b/src/pkg/runtime/alg.c @@ -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; }