Commit 56c66747 by Per Bothner

* cppalloc.c (xcalloc): Re-implement using calloc, rather than malloc+bzero.

From-SVN: r9319
parent 746a9efa
...@@ -45,10 +45,9 @@ xrealloc (old, size) ...@@ -45,10 +45,9 @@ xrealloc (old, size)
unsigned size; unsigned size;
{ {
register char *ptr = (char *) realloc (old, size); register char *ptr = (char *) realloc (old, size);
if (ptr != 0) return (ptr); if (ptr == 0)
memory_full (); memory_full ();
/*NOTREACHED*/ return ptr;
return 0;
} }
char * char *
...@@ -56,26 +55,8 @@ xcalloc (number, size) ...@@ -56,26 +55,8 @@ xcalloc (number, size)
unsigned number, size; unsigned number, size;
{ {
register unsigned total = number * size; register unsigned total = number * size;
register char *ptr = (char *) malloc (total); register char *ptr = (char *) calloc (number, size);
if (ptr != 0) { if (ptr == 0)
if (total > 100) memory_full ();
bzero (ptr, total); return ptr;
else {
/* It's not too long, so loop, zeroing by longs.
It must be safe because malloc values are always well aligned. */
register long *zp = (long *) ptr;
register long *zl = (long *) (ptr + total - 4);
register int i = total - 4;
while (zp < zl)
*zp++ = 0;
if (i < 0)
i = 0;
while (i < total)
ptr[i++] = 0;
}
return ptr;
}
memory_full ();
/*NOTREACHED*/
return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment