Because we can, and because it otherwise might crash
the program if we think we're out of memory.
Fixes #6390.
R=golang-dev, iant, minux.ma
CC=golang-dev
https://golang.org/cl/
13345048
func TestCallbackStack(t *testing.T) { testCallbackStack(t) }
func TestFpVar(t *testing.T) { testFpVar(t) }
func Test4339(t *testing.T) { test4339(t) }
+func Test6390(t *testing.T) { test6390(t) }
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
extern void runtime_throw(const char *):
void *Cmalloc(size_t n) {
void *p = malloc(n);
+ if(p == NULL && n == 0)
+ p = malloc(1);
if(p == NULL)
runtime_throw("runtime: C malloc failed");
return p;
} *a = p;
a->ret = malloc(a->n);
+ if(a->ret == NULL && a->n == 0)
+ a->ret = malloc(1);
}
/* Stub for calling free from Go */