diff options
| author | Matthew Dempsky <mdempsky@google.com> | 2014-12-30 12:31:17 -0800 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2015-01-04 01:59:59 +0000 |
| commit | 537ddc945685cea6fd2f3cbc8bfc6f69616671fd (patch) | |
| tree | 941db3fb02bbf154b6cf3f740639ffd3b8acc1d4 /src/runtime/slice.go | |
| parent | 865e5e98b685eb3a7888f5263021049c0694d16f (diff) | |
| download | go-537ddc945685cea6fd2f3cbc8bfc6f69616671fd.tar.xz | |
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>
Diffstat (limited to 'src/runtime/slice.go')
| -rw-r--r-- | src/runtime/slice.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/runtime/slice.go b/src/runtime/slice.go index 4fb2adc1f9..e427a8b7cc 100644 --- a/src/runtime/slice.go +++ b/src/runtime/slice.go @@ -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) |
