mirror of
				https://github.com/golang/go.git
				synced 2025-11-03 02:00:57 +00:00 
			
		
		
		
	Fixes #25834 Change-Id: I33e58dabfd04b84dfee1a9a3796796b5d19862e7 Reviewed-on: https://go-review.googlesource.com/118295 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
		
			
				
	
	
		
			29 lines
		
	
	
	
		
			674 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			674 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// 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")
 | 
						|
	}
 | 
						|
}
 |