mirror of
https://github.com/golang/go
synced 2024-11-24 05:10:19 -07:00
gc: composite literal double eval bug
Fixes #2086. R=ken2 CC=golang-dev https://golang.org/cl/4803055
This commit is contained in:
parent
5ea413e2a0
commit
f91eb3c2f9
@ -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);
|
||||
|
26
test/fixedbugs/bug354.go
Normal file
26
test/fixedbugs/bug354.go
Normal file
@ -0,0 +1,26 @@
|
||||
// $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 }}}}
|
Loading…
Reference in New Issue
Block a user