summaryrefslogtreecommitdiff
path: root/src/cmd/gc/closure.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-06-08 18:50:02 -0700
committerRuss Cox <rsc@golang.org>2010-06-08 18:50:02 -0700
commit0b814afd0a2fa1dded3eaf4d2f79b20438842955 (patch)
tree19d1ab733d194831a2bf78d352fc92bb71e86f7a /src/cmd/gc/closure.c
parent11704e355aa8f39669a36fe56c01d17deab60658 (diff)
downloadgolang-0b814afd0a2fa1dded3eaf4d2f79b20438842955.tar.gz
gc: new typechecking rules
* Code for assignment, conversions now mirrors spec. * Changed some snprint -> smprint. * Renamed runtime functions to separate interface conversions from type assertions: convT2I, assertI2T, etc. * Correct checking of \U sequences. Fixes issue 840. Fixes issue 830. Fixes issue 778. R=ken2 CC=golang-dev http://codereview.appspot.com/1303042
Diffstat (limited to 'src/cmd/gc/closure.c')
-rw-r--r--src/cmd/gc/closure.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cmd/gc/closure.c b/src/cmd/gc/closure.c
index c194a0df3..a24a03a49 100644
--- a/src/cmd/gc/closure.c
+++ b/src/cmd/gc/closure.c
@@ -119,6 +119,7 @@ walkclosure(Node *func, NodeList **init)
Node *xtype, *v, *addr, *xfunc, *call, *clos;
NodeList *l, *in;
static int closgen;
+ char *p;
/*
* wrap body in external function
@@ -134,8 +135,9 @@ walkclosure(Node *func, NodeList **init)
if(v->op == 0)
continue;
addr = nod(ONAME, N, N);
- snprint(namebuf, sizeof namebuf, "&%s", v->sym->name);
- addr->sym = lookup(namebuf);
+ p = smprint("&%s", v->sym->name);
+ addr->sym = lookup(p);
+ free(p);
addr->ntype = nod(OIND, typenod(v->type), N);
addr->class = PPARAM;
addr->addable = 1;