mirror of
https://github.com/golang/go
synced 2024-11-12 12:40:28 -07:00
20c7e41555
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")
|
|
}
|
|
}
|