]> Cypherpunks.ru repositories - gostls13.git/commitdiff
misc/cgo/test: fix vet error
authorAustin Clements <austin@google.com>
Sat, 6 May 2023 01:38:02 +0000 (21:38 -0400)
committerAustin Clements <austin@google.com>
Fri, 12 May 2023 11:59:58 +0000 (11:59 +0000)
Vet's cgocall check fails on misc/cgo/test with "possibly passing Go
type with embedded pointer to C". This error is confusing, but the
cgocall check is looking for passing pointers to Go slices to C, which
is exactly what this test is doing. Normally we don't notice this
because vet doesn't run on misc, but we're about to move this test to
cmd/cgo/internal, where vet will start failing.

I'm not sure why we're passing a pointer to a slice here. It's
important that we call a C function with an unsafe.Pointer to memory
containing a pointer to test #25941 and that the result is this call
is then passed to another C function for #28540. This CL maintains
these two properties without the use of a slice.

For #37486.

Change-Id: I672a3c35931a59f99363050498d6f0c80fb6cd98
Reviewed-on: https://go-review.googlesource.com/c/go/+/493137
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
misc/cgo/test/test.go

index 9d9b14ee74ec34f3cba077095d3c44000daea7cb..1529ca59280994c608e3cbf1cdd7cb3992e1289d 100644 (file)
@@ -2116,7 +2116,7 @@ func test27660(t *testing.T) {
 // issue 28540
 
 func twoargsF() {
-       v := []string{}
+       var v struct{ p *byte }
        C.twoargs1(C.twoargs2(), C.twoargs3(unsafe.Pointer(&v)))
 }