]> Cypherpunks.ru repositories - gostls13.git/blob - misc/cgo/errors/testdata/malloc.go
65da0208b9708f8115abcdc00733acff25358ddc
[gostls13.git] / misc / cgo / errors / testdata / malloc.go
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // Test that C.malloc does not return nil.
6
7 package main
8
9 // #include <stdlib.h>
10 import "C"
11
12 import (
13         "fmt"
14         "runtime"
15 )
16
17 func main() {
18         var size C.size_t
19         size--
20
21         // The Dragonfly libc succeeds when asked to allocate
22         // 0xffffffffffffffff bytes, so pass a different value that
23         // causes it to fail.
24         if runtime.GOOS == "dragonfly" {
25                 size = C.size_t(0x7fffffff << (32 * (^uintptr(0) >> 63)))
26         }
27
28         p := C.malloc(size)
29         if p == nil {
30                 fmt.Println("malloc: C.malloc returned nil")
31                 // Just exit normally--the test script expects this
32                 // program to crash, so exiting normally indicates failure.
33         }
34 }