runtime: fix slicecopy return value for zero-width elements

Fixes #8620

Change-Id: Idb49e586919d21d07e94a39ed9ebb0562f403460
Reviewed-on: https://go-review.googlesource.com/2221
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Matthew Dempsky 2014-12-30 12:31:17 -08:00 committed by Ian Lance Taylor
parent 865e5e98b6
commit 537ddc9456
2 changed files with 35 additions and 1 deletions

View file

@ -92,7 +92,7 @@ func growslice(t *slicetype, old sliceStruct, n int64) sliceStruct {
}
func slicecopy(to sliceStruct, fm sliceStruct, width uintptr) int {
if fm.len == 0 || to.len == 0 || width == 0 {
if fm.len == 0 || to.len == 0 {
return 0
}
@ -101,6 +101,10 @@ func slicecopy(to sliceStruct, fm sliceStruct, width uintptr) int {
n = to.len
}
if width == 0 {
return n
}
if raceenabled {
callerpc := getcallerpc(unsafe.Pointer(&to))
pc := funcPC(slicecopy)