xref: /openbsd-src/gnu/lib/libiberty/src/calloc.c (revision 150b7e42cfa21e6546d96ae514ca23e80d970ac7)
100bf4279Sespie /* calloc -- allocate memory which has been initialized to zero.
200bf4279Sespie    This function is in the public domain. */
39588ddcfSespie 
49588ddcfSespie /*
59588ddcfSespie 
69588ddcfSespie @deftypefn Supplemental void* calloc (size_t @var{nelem}, size_t @var{elsize})
79588ddcfSespie 
89588ddcfSespie Uses @code{malloc} to allocate storage for @var{nelem} objects of
99588ddcfSespie @var{elsize} bytes each, then zeros the memory.
109588ddcfSespie 
119588ddcfSespie @end deftypefn
129588ddcfSespie 
139588ddcfSespie */
1400bf4279Sespie 
1500bf4279Sespie #include "ansidecl.h"
1600bf4279Sespie #include <stddef.h>
1700bf4279Sespie 
1800bf4279Sespie /* For systems with larger pointers than ints, this must be declared.  */
19*150b7e42Smiod PTR malloc (size_t);
20*150b7e42Smiod void bzero (PTR, size_t);
2100bf4279Sespie 
2200bf4279Sespie PTR
calloc(size_t nelem,size_t elsize)23*150b7e42Smiod calloc (size_t nelem, size_t elsize)
2400bf4279Sespie {
2500bf4279Sespie   register PTR ptr;
2600bf4279Sespie 
2700bf4279Sespie   if (nelem == 0 || elsize == 0)
2800bf4279Sespie     nelem = elsize = 1;
2900bf4279Sespie 
3000bf4279Sespie   ptr = malloc (nelem * elsize);
3100bf4279Sespie   if (ptr) bzero (ptr, nelem * elsize);
3200bf4279Sespie 
3300bf4279Sespie   return ptr;
3400bf4279Sespie }
35