diff options
Diffstat (limited to 'src/cmd/cgo/out.go')
| -rw-r--r-- | src/cmd/cgo/out.go | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index 9c962b8ff..498ab1566 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -59,17 +59,21 @@ func (p *Package) writeDefs() {  	fmt.Fprintf(fc, cProlog) -	var cVars []string +	cVars := make(map[string]bool)  	for _, n := range p.Name {  		if n.Kind != "var" {  			continue  		} -		cVars = append(cVars, n.C) -		fmt.Fprintf(fm, "extern char %s[];\n", n.C) -		fmt.Fprintf(fm, "void *_cgohack_%s = %s;\n\n", n.C, n.C) +		if !cVars[n.C] { +			fmt.Fprintf(fm, "extern char %s[];\n", n.C) +			fmt.Fprintf(fm, "void *_cgohack_%s = %s;\n\n", n.C, n.C) + +			fmt.Fprintf(fc, "extern byte *%s;\n", n.C) + +			cVars[n.C] = true +		} -		fmt.Fprintf(fc, "extern byte *%s;\n", n.C)  		fmt.Fprintf(fc, "void *ยท%s = &%s;\n", n.Mangle, n.C)  		fmt.Fprintf(fc, "\n") | 
