The Go programming language
Go to file
Dmitriy Vyukov 5bc1cef869 reflect: fix map type generation
If a map variable is created with reflect.New it has incorrect type (map[unsafe.Pointer]unsafe.Pointer).
If GC follows such pointer, it scans Hmap and buckets with incorrect type.
This can lead to overscan of up to 120 bytes for map[int8]struct{}.
Which in turn can lead to crash if the memory after a bucket object is unaddressable
or false retention (buckets are scanned as arrays of unsafe.Pointer).
I don't see how it can lead to heap corruptions, though.

LGTM=khr
R=rsc, khr
CC=golang-codereviews
https://golang.org/cl/96270044
2014-05-13 09:53:47 +04:00
api api: update next.txt 2014-04-01 13:14:45 -04:00
doc cmd/go: link SWIG objects directly rather than using a shared library 2014-05-12 12:43:51 -07:00
include include/plan9: make mklibc.rc compatible with 9atom 2014-04-19 09:55:09 +02:00
lib lib/time: update time zone info to v.2014b 2014-04-29 21:41:54 -04:00
misc cmd/cgo: omit misaligned struct fields, like we omit bitfields 2014-05-12 23:48:20 -04:00
src reflect: fix map type generation 2014-05-13 09:53:47 +04:00
test cmd/gc: fix liveness vs regopt mismatch for input variables 2014-05-12 17:19:02 -04:00
.hgignore lib9: enable on Plan 9 2014-02-13 20:06:41 +01:00
.hgtags tag go1.2.2 2014-05-05 10:45:56 -07:00
AUTHORS A+C: Jason Del Ponte (individual CLA) 2014-05-12 23:34:27 -04:00
CONTRIBUTORS A+C: Jason Del Ponte (individual CLA) 2014-05-12 23:34:27 -04:00
LICENSE doc: update licensing text one more time 2012-03-27 15:09:13 +11:00
PATENTS
README README: Fix installation instructions 2013-11-20 13:47:37 -08:00
favicon.ico godoc: update favicon 2012-10-11 17:02:36 +11:00
robots.txt

README

This is the source code repository for the Go programming language.  

For documentation about how to install and use Go,
visit http://golang.org/ or load doc/install-source.html
in your web browser.

After installing Go, you can view a nicely formatted
doc/install-source.html by running godoc --http=:6060
and then visiting http://localhost:6060/doc/install/source.

Unless otherwise noted, the Go source files are distributed
under the BSD-style license found in the LICENSE file.

--

Binary Distribution Notes

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 README).  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.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 doc/install.html for more details.