mirror of
https://github.com/golang/go
synced 2024-11-21 15:14:43 -07:00
gc: fix unsafe.Sizeof
Fixes #1608. Fixes #1787. R=ken2 CC=golang-dev https://golang.org/cl/4530045
This commit is contained in:
parent
0389051aac
commit
3f335f80b4
@ -41,6 +41,7 @@ unsafenmagic(Node *nn)
|
||||
tr = r->type;
|
||||
if(tr == T)
|
||||
goto bad;
|
||||
dowidth(tr);
|
||||
v = tr->width;
|
||||
goto yes;
|
||||
}
|
||||
|
22
test/fixedbugs/bug338.go
Normal file
22
test/fixedbugs/bug338.go
Normal file
@ -0,0 +1,22 @@
|
||||
// $G $D/$F.go
|
||||
|
||||
// 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 1787.
|
||||
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const x = unsafe.Sizeof([8]byte{})
|
||||
|
||||
func main() {
|
||||
var b [x]int
|
||||
_ = b
|
||||
}
|
||||
|
||||
/*
|
||||
bug338.go:14: array bound must be non-negative
|
||||
*/
|
20
test/fixedbugs/bug339.go
Normal file
20
test/fixedbugs/bug339.go
Normal file
@ -0,0 +1,20 @@
|
||||
// $G $D/$F.go && $L $F.$A && ./$A.out
|
||||
|
||||
// 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 1608.
|
||||
// Size used to be -1000000000.
|
||||
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
func main() {
|
||||
var a interface{} = 0
|
||||
size := unsafe.Sizeof(a)
|
||||
if size != 2*unsafe.Sizeof((*int)(nil)) {
|
||||
println("wrong size: ", size)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user