aboutsummaryrefslogtreecommitdiffhomepage
path: root/testdata/cgo/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'testdata/cgo/main.go')
-rw-r--r--testdata/cgo/main.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/testdata/cgo/main.go b/testdata/cgo/main.go
index 00e0ba01d..38d11386a 100644
--- a/testdata/cgo/main.go
+++ b/testdata/cgo/main.go
@@ -18,7 +18,10 @@ import "C"
// static int headerfunc_static(int a) { return a - 1; }
import "C"
-import "unsafe"
+import (
+ "syscall"
+ "unsafe"
+)
func main() {
println("fortytwo:", C.fortytwo())
@@ -168,6 +171,13 @@ func main() {
println("len(C.GoBytes(C.CBytes(nil),0)):", len(C.GoBytes(C.CBytes(nil), 0)))
println(`rountrip CBytes:`, C.GoString((*C.char)(C.CBytes([]byte("hello\000")))))
+ // Check that errno is returned from the second return value, and that it
+ // matches the errno value that was just set.
+ _, errno := C.set_errno(C.EINVAL)
+ println("EINVAL:", errno == syscall.EINVAL)
+ _, errno = C.set_errno(C.EAGAIN)
+ println("EAGAIN:", errno == syscall.EAGAIN)
+
// libc: test whether C functions work at all.
buf1 := []byte("foobar\x00")
buf2 := make([]byte, len(buf1))