ack/lang/cem/libcc/gen/calloc.c
ceriel 30959cd73f some fixes: calloc was wrong; catch traps, and let divides
by 0 generate a signal, if on a unix machine
1989-02-20 18:01:33 +00:00

18 lines
377 B
C

/* $Header$ */
#define ALIGN(sz) ((((sz) + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long))
char *
calloc(nelem, elsize)
unsigned int nelem, elsize;
{
register char *p;
register long *q;
unsigned int size = ALIGN(nelem * elsize);
extern char *malloc();
p = malloc(size);
if (p == 0) return 0;
q = (long *) (p + size);
while ((char *) q > p) *--q = 0;
return p;
}