// Copyright 2012 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 3729: cmd/cgo: access errno from void C function // void f(void) returns [0]byte, error in Go world. // +build !windows package cgotest /* #include <errno.h> void g(void) { errno = E2BIG; } // try to pass some non-trivial arguments to function g2 const char _expA = 0x42; const float _expB = 3.14159; const short _expC = 0x55aa; const int _expD = 0xdeadbeef; void g2(int x, char a, float b, short c, int d) { if (a == _expA && b == _expB && c == _expC && d == _expD) errno = x; else errno = -1; } */ import "C" import ( "syscall" "testing" ) func test3729(t *testing.T) { _, e := C.g() if e != syscall.E2BIG { t.Errorf("got %q, expect %q", e, syscall.E2BIG) } _, e = C.g2(C.EINVAL, C._expA, C._expB, C._expC, C._expD) if e != syscall.EINVAL { t.Errorf("got %q, expect %q", e, syscall.EINVAL) } }