xref: /csrg-svn/lib/libc/stdlib/calloc.c (revision 1956)
1*1956Swnj /* @(#)calloc.c	4.1 (Berkeley) 12/21/80 */
2*1956Swnj /*	calloc - allocate and clear memory block
3*1956Swnj */
4*1956Swnj #define CHARPERINT (sizeof(int)/sizeof(char))
5*1956Swnj #define NULL 0
6*1956Swnj 
7*1956Swnj char *
8*1956Swnj calloc(num, size)
9*1956Swnj unsigned num, size;
10*1956Swnj {
11*1956Swnj 	register char *mp;
12*1956Swnj 	char *malloc();
13*1956Swnj 	register int *q;
14*1956Swnj 	register m;
15*1956Swnj 
16*1956Swnj 	num *= size;
17*1956Swnj 	mp = malloc(num);
18*1956Swnj 	if(mp == NULL)
19*1956Swnj 		return(NULL);
20*1956Swnj 	q = (int *) mp;
21*1956Swnj 	m = (num+CHARPERINT-1)/CHARPERINT;
22*1956Swnj 	while(--m>=0)
23*1956Swnj 		*q++ = 0;
24*1956Swnj 	return(mp);
25*1956Swnj }
26*1956Swnj 
27*1956Swnj cfree(p, num, size)
28*1956Swnj char *p;
29*1956Swnj unsigned num, size;
30*1956Swnj {
31*1956Swnj 	free(p);
32*1956Swnj }
33