aboutsummaryrefslogtreecommitdiff
path: root/misc/cgo/errors
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2016-10-25 12:59:36 -0700
committerIan Lance Taylor <iant@golang.org>2016-10-25 20:11:50 +0000
commite24ccfc6fc6289073cdbe6f47f8a915e798578e9 (patch)
treea26c7e9f4fed82b6f30e1992817a86f75ea8d7a0 /misc/cgo/errors
parentd391dc260a71e9f67530d7c2ca20d595514d3514 (diff)
downloadgo-e24ccfc6fc6289073cdbe6f47f8a915e798578e9.tar.xz
misc/cgo/errors: fix malloc test for dragonfly
The Dragonfly libc returns a non-zero value for malloc(-1). Fixes #17585. Change-Id: Icfe68011ccbc75c676273ee3c3efdf24a520a004 Reviewed-on: https://go-review.googlesource.com/32050 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'misc/cgo/errors')
-rw-r--r--misc/cgo/errors/malloc.go13
-rwxr-xr-xmisc/cgo/errors/test.bash2
2 files changed, 13 insertions, 2 deletions
diff --git a/misc/cgo/errors/malloc.go b/misc/cgo/errors/malloc.go
index 7a69736222..65da0208b9 100644
--- a/misc/cgo/errors/malloc.go
+++ b/misc/cgo/errors/malloc.go
@@ -11,10 +11,21 @@ import "C"
import (
"fmt"
+ "runtime"
)
func main() {
- p := C.malloc(C.size_t(^uintptr(0)))
+ var size C.size_t
+ size--
+
+ // The Dragonfly libc succeeds when asked to allocate
+ // 0xffffffffffffffff bytes, so pass a different value that
+ // causes it to fail.
+ if runtime.GOOS == "dragonfly" {
+ size = C.size_t(0x7fffffff << (32 * (^uintptr(0) >> 63)))
+ }
+
+ p := C.malloc(size)
if p == nil {
fmt.Println("malloc: C.malloc returned nil")
// Just exit normally--the test script expects this
diff --git a/misc/cgo/errors/test.bash b/misc/cgo/errors/test.bash
index 8b892938fc..05261e9d76 100755
--- a/misc/cgo/errors/test.bash
+++ b/misc/cgo/errors/test.bash
@@ -62,7 +62,7 @@ fi
# The malloc.go test should crash.
rm -f malloc.out
if go run malloc.go >malloc.out 2>&1; then
- echo "`go run malloc.go` succeeded unexpectedly"
+ echo '`go run malloc.go` succeeded unexpectedly'
cat malloc.out
rm -f malloc.out
exit 1