[project @ 2005-12-16 11:26:01 by simonmar]
authorsimonmar <unknown>
Fri, 16 Dec 2005 11:26:01 +0000 (11:26 +0000)
committersimonmar <unknown>
Fri, 16 Dec 2005 11:26:01 +0000 (11:26 +0000)
Use standard calloc rather than rolling our own.

As a small bonus, the standard libc version is more effecient about zeroing
the memory.

From: Duncan Coutts <duncan.coutts@worc.ox.ac.uk>

ghc/rts/RtsUtils.c

index a448c3e..b54d3da 100644 (file)
@@ -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