| // 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. |
| } |
| } |