mirror of
https://github.com/golang/go
synced 2024-11-15 01:20:28 -07:00
e24ccfc6fc
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>
35 lines
766 B
Go
35 lines
766 B
Go
// Copyright 2016 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.
|
|
|
|
// Test that C.malloc does not return nil.
|
|
|
|
package main
|
|
|
|
// #include <stdlib.h>
|
|
import "C"
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
)
|
|
|
|
func main() {
|
|
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
|
|
// program to crash, so exiting normally indicates failure.
|
|
}
|
|
}
|