runtime: don't return a slice with nil ptr but non-zero len from growslice

Fixes #10135.

Change-Id: Ic4c5ab15bcb7b9c3fcc685a788d3b59c60c26e1e
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7400
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Shenghou Ma 2015-03-11 12:07:50 -04:00 committed by Minux Ma
parent 1e1c9dc2c8
commit 0d6a0d6c3f
2 changed files with 28 additions and 1 deletions

View file

@ -50,7 +50,9 @@ func growslice(t *slicetype, old sliceStruct, n int) sliceStruct {
et := t.elem
if et.size == 0 {
return sliceStruct{old.array, old.len, cap}
// append should not create a slice with nil pointer but non-zero len.
// We assume that append doesn't need to preserve old.array in this case.
return sliceStruct{unsafe.Pointer(&zerobase), old.len, cap}
}
newcap := old.cap