From facee93a8627881ae39abda13cba115274fe20cf Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 6 Feb 2012 11:24:34 -0500 Subject: [PATCH] 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 --- src/pkg/runtime/alg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } -- 2.50.0