commit | 731bdc51157fd7f685fb73c298e97922318ac453 | [log] [tgz] |
---|---|---|
author | Keith Randall <khr@golang.org> | Tue Sep 01 12:53:15 2015 -0700 |
committer | Keith Randall <khr@golang.org> | Tue Sep 15 17:51:23 2015 +0000 |
tree | 68a0f0718ef3c2dda68c2fe7b615978c1284493f | |
parent | 3d5bed272624fede0e5249f9e7a13ee779e2ba17 [diff] |
runtime: fix aeshash of empty string Aeshash currently computes the hash of the empty string as hash("", seed) = seed. This is bad because the hash of a compound object with empty strings in it doesn't include information about where those empty strings were. For instance [2]string{"", "foo"} and [2]string{"foo", ""} might get the same hash. Fix this by returning a scrambled seed instead of the seed itself. With this fix, we can remove the scrambling done by the generated array hash routines. The test also rejects hash("", seed) = 0, if we ever thought it would be a good idea to try that. The fallback hash is already OK in this regard. Change-Id: Iaedbaa5be8d6a246dc7e9383d795000e0f562037 Reviewed-on: https://go-review.googlesource.com/14129 Reviewed-by: jcd . <jcd@golang.org>
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
For documentation about how to install and use Go, visit https://golang.org/ or load doc/install-source.html in your web browser.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Please report issues here: https://golang.org/issue/new
Go is the work of hundreds of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
If you have just untarred a binary Go distribution, you need to set the environment variable $GOROOT to the full path of the go directory (the one containing this file). You can omit the variable if you unpack it into /usr/local/go, or if you rebuild from sources by running all.bash (see doc/install-source.html). You should also add the Go binary directory $GOROOT/bin to your shell's path.
For example, if you extracted the tar file into $HOME/go, you might put the following in your .profile:
export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin
See https://golang.org/doc/install or doc/install.html for more details.