Initial commit: Go 1.23 release state
This commit is contained in:
29
test/strcopy.go
Normal file
29
test/strcopy.go
Normal file
@@ -0,0 +1,29 @@
|
||||
// run
|
||||
|
||||
// Copyright 2018 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Test that string([]byte(string)) makes a copy and doesn't reduce to
|
||||
// nothing. (Issue 25834)
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var (
|
||||
buf = make([]byte, 2<<10)
|
||||
large = string(buf)
|
||||
sub = large[10:12]
|
||||
subcopy = string([]byte(sub))
|
||||
subh = *(*reflect.StringHeader)(unsafe.Pointer(&sub))
|
||||
subcopyh = *(*reflect.StringHeader)(unsafe.Pointer(&subcopy))
|
||||
)
|
||||
if subh.Data == subcopyh.Data {
|
||||
panic("sub and subcopy have the same underlying array")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user