summaryrefslogtreecommitdiff
path: root/src/cmd/gc/sinit.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-01-18 17:00:38 -0800
committerRuss Cox <rsc@golang.org>2010-01-18 17:00:38 -0800
commitc73b5780e421d799068bef524a6a87bf580e3bb5 (patch)
tree4a6ff7681e484e45c73fb1a37799e5295d2b2fd1 /src/cmd/gc/sinit.c
parent7df75e392ba90403b9d4d11ab7f692b86ee73a49 (diff)
downloadgolang-c73b5780e421d799068bef524a6a87bf580e3bb5.tar.gz
gc: multiple return value at top-level invoked multiple times
Fixes issue 402. R=ken2 CC=golang-dev http://codereview.appspot.com/186214
Diffstat (limited to 'src/cmd/gc/sinit.c')
-rw-r--r--src/cmd/gc/sinit.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/gc/sinit.c b/src/cmd/gc/sinit.c
index b1160d3d4..1b618fddb 100644
--- a/src/cmd/gc/sinit.c
+++ b/src/cmd/gc/sinit.c
@@ -90,12 +90,18 @@ init1(Node *n, NodeList **out)
break;
case OAS2FUNC:
+ if(n->defn->initorder)
+ break;
+ n->defn->initorder = 1;
for(l=n->defn->rlist; l; l=l->next)
init1(l->n, out);
*out = list(*out, n->defn);
break;
case OAS2MAPR:
+ if(n->defn->initorder)
+ break;
+ n->defn->initorder = 1;
for(l=n->defn->rlist; l; l=l->next)
init1(l->n, out);
*out = list(*out, n->defn);