Home | History | Annotate | Download | only in fixedbugs
      1 // run
      2 
      3 // Copyright 2014 The Go Authors.  All rights reserved.
      4 // Use of this source code is governed by a BSD-style
      5 // license that can be found in the LICENSE file.
      6 
      7 // Test for a garbage collection bug involving not
      8 // marking x as having its address taken by &x[0]
      9 // when x is an array value.
     10 
     11 package main
     12 
     13 import (
     14 	"bytes"
     15 	"fmt"
     16 	"runtime"
     17 )
     18 
     19 func main() {
     20 	var x = [4]struct{ x, y interface{} }{
     21 		{"a", "b"},
     22 		{"c", "d"},
     23 		{"e", "f"},
     24 		{"g", "h"},
     25 	}
     26 
     27 	var buf bytes.Buffer
     28 	for _, z := range x {
     29 		runtime.GC()
     30 		fmt.Fprintf(&buf, "%s %s ", z.x.(string), z.y.(string))
     31 	}
     32 
     33 	if buf.String() != "a b c d e f g h " {
     34 		println("BUG wrong output\n", buf.String())
     35 	}
     36 }
     37