summaryrefslogtreecommitdiff
path: root/src/cmd/cgo
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2011-08-24 13:23:15 +0200
committerOndřej Surý <ondrej@sury.org>2011-08-24 13:23:15 +0200
commit0b48c8ae1c27bfcc1f5b3f611e64f47321cd18c6 (patch)
tree107ba5c251175c7ce0d07eeb4748967510c548e2 /src/cmd/cgo
parent825e92f34920934f09dbf4c614dbd2913ba464cb (diff)
downloadgolang-0b48c8ae1c27bfcc1f5b3f611e64f47321cd18c6.tar.gz
Imported Upstream version 2011.08.17
Diffstat (limited to 'src/cmd/cgo')
-rw-r--r--src/cmd/cgo/out.go14
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")