diff options
| author | Ian Lance Taylor <iant@golang.org> | 2016-10-25 12:59:36 -0700 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2016-10-25 20:11:50 +0000 |
| commit | e24ccfc6fc6289073cdbe6f47f8a915e798578e9 (patch) | |
| tree | a26c7e9f4fed82b6f30e1992817a86f75ea8d7a0 /misc/cgo/errors | |
| parent | d391dc260a71e9f67530d7c2ca20d595514d3514 (diff) | |
| download | go-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.go | 13 | ||||
| -rwxr-xr-x | misc/cgo/errors/test.bash | 2 |
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 |
