mirror of
https://github.com/golang/go.git
synced 2025-05-14 20:04:39 +00:00
It used to not mark parameters as escaping if only one of the fields it points to leaks out of the function. This causes problems when importing from another package. Fixes #4964. R=rsc, lvd, dvyukov, daniel.morsing CC=golang-dev https://golang.org/cl/7648045
35 lines
484 B
Go
35 lines
484 B
Go
// Copyright 2013 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 main
|
|
|
|
import "./a"
|
|
|
|
func F() {
|
|
// store 1 in a.global
|
|
x, y := 1, 2
|
|
t := a.T{Pointer: &x}
|
|
a.Store(&t)
|
|
_ = y
|
|
}
|
|
|
|
func G() {
|
|
// store 4 in a.global2
|
|
x, y := 3, 4
|
|
t := a.T{Pointer: &y}
|
|
a.Store2(&t)
|
|
_ = x
|
|
}
|
|
|
|
func main() {
|
|
F()
|
|
G()
|
|
p := a.Get()
|
|
n := *p
|
|
if n != 1 {
|
|
println(n, "!= 1")
|
|
panic("n != 1")
|
|
}
|
|
}
|