Commit f91eb3c2 authored by Russ Cox's avatar Russ Cox

gc: composite literal double eval bug

Fixes #2086.

R=ken2
CC=golang-dev
https://golang.org/cl/4803055
parent 5ea413e2
......@@ -189,7 +189,7 @@ compactframe(Prog* ptxt)
continue;
w = n->type->width;
if((w >= MAXWIDTH) || (w < 0))
if(w >= MAXWIDTH || w < 0)
fatal("bad width");
stksize += w;
stksize = rnd(stksize, n->type->align);
......
......@@ -686,7 +686,7 @@ anylit(int ctxt, Node *n, Node *var, NodeList **init)
if(ctxt == 0) {
// lay out static data
vstat = staticname(t, ctxt);
structlit(1, 1, n, vstat, init);
structlit(ctxt, 1, n, vstat, init);
// copy static to var
a = nod(OAS, var, vstat);
......
// $G $D/$F.go || echo BUG: bug354
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// issue 2086
// was calling makeclosure twice on the closure
package main
import (
"os"
)
type Inner struct {
F func() os.Error
}
type Outer struct {
Inners []Inner
}
// calls makeclosure twice on same closure
var Foo = Outer{[]Inner{Inner{func() os.Error{ return nil }}}}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment