Run Format

Source file test/fixedbugs/issue19743.go

Documentation: test/fixedbugs

  // errorcheck -0 -m -l
  // Copyright 2017 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.
  package foo
  // Escape analysis needs to treat the uintptr-typed reflect.*Header fields as pointers.
  import (
  type immutableBytes []byte
  // Bug was failure to leak param b.
  func toString(b immutableBytes) string { // ERROR "leaking param: b$"
  	var s string
  	if len(b) == 0 {
  		return s
  	strHeader := (*reflect.StringHeader)(unsafe.Pointer(&s))         // ERROR "toString &s does not escape$"
  	strHeader.Data = (*reflect.SliceHeader)(unsafe.Pointer(&b)).Data // ERROR "toString &b does not escape$"
  	l := len(b)
  	strHeader.Len = l
  	return s

View as plain text