diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/vet/cgo.go | 5 | ||||
| -rw-r--r-- | src/cmd/vet/testdata/cgo.go | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd/vet/cgo.go b/src/cmd/vet/cgo.go index b896862c8f..d233e9a960 100644 --- a/src/cmd/vet/cgo.go +++ b/src/cmd/vet/cgo.go @@ -38,6 +38,11 @@ func checkCgoCall(f *File, node ast.Node) { return } + // A call to C.CBytes passes a pointer but is always safe. + if sel.Sel.Name == "CBytes" { + return + } + for _, arg := range x.Args { if !typeOKForCgoCall(cgoBaseType(f, arg)) { f.Badf(arg.Pos(), "possibly passing Go type with embedded pointer to C") diff --git a/src/cmd/vet/testdata/cgo.go b/src/cmd/vet/testdata/cgo.go index 5ce6007fcb..25d395b1ea 100644 --- a/src/cmd/vet/testdata/cgo.go +++ b/src/cmd/vet/testdata/cgo.go @@ -51,4 +51,6 @@ func CgoTests() { var st2 struct{ i int } C.f(*(*unsafe.Pointer)(unsafe.Pointer(&st2))) C.f(unsafe.Pointer(&st2)) + + C.CBytes([]byte("hello")) } |
