X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FRtsUtils.c;h=b54d3da6d2883fc620bc168f77325c8de6edc9bf;hb=28cb5a23923dec35e463a6296171cb6f30f3dc1e;hp=a448c3ec5634bf2e09ad982fd06fb2d9f623db2d;hpb=12694df2b002fe264d1e9e8209e0fbb6914ffe50;p=ghc-hetmet.git diff --git a/ghc/rts/RtsUtils.c b/ghc/rts/RtsUtils.c index a448c3e..b54d3da 100644 --- a/ghc/rts/RtsUtils.c +++ b/ghc/rts/RtsUtils.c @@ -91,11 +91,14 @@ stgReallocBytes (void *p, int n, char *msg) void * stgCallocBytes (int n, int m, char *msg) { - int i; - int sz = n * m; - char* p = stgMallocBytes(sz, msg); - for (i = 0; i < sz; i++) p[i] = 0; - return p; + char *space; + + if ((space = (char *) calloc((size_t) n, (size_t) m)) == NULL) { + /* don't fflush(stdout); WORKAROUND bug in Linux glibc */ + MallocFailHook((W_) n*m, msg); /*msg*/ + stg_exit(EXIT_INTERNAL_ERROR); + } + return space; } /* To simplify changing the underlying allocator used