X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=opt%2Fmalloc-solar%2Fcalloc.c;fp=opt%2Fmalloc-solar%2Fcalloc.c;h=a2dc21ffdccfdf31336d911607cdea0411f31316;hb=b41576197133c1211d6ec353faf93f505f573b8a;hp=0000000000000000000000000000000000000000;hpb=93ca2d813f86c52bb9bece81ca564d4831bff9e5;p=pdclib diff --git a/opt/malloc-solar/calloc.c b/opt/malloc-solar/calloc.c new file mode 100644 index 0000000..a2dc21f --- /dev/null +++ b/opt/malloc-solar/calloc.c @@ -0,0 +1,49 @@ +/* $Id$ */ + +/* void * calloc( size_t, size_t ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include +#include + +#ifndef REGTEST + +void * calloc( size_t nmemb, size_t size ) +{ + /* assign memory for nmemb elements of given size */ + void * rc = malloc( nmemb * size ); + if ( rc != NULL ) + { + /* zero-initialize the memory */ + memset( rc, 0, nmemb * size ); + } + return rc; +} + +#endif + +#ifdef TEST +#include <_PDCLIB_test.h> + +int main( void ) +{ + char * s; + TESTCASE( ( s = calloc( 3, 2 ) ) != NULL ); + TESTCASE( s[0] == '\0' ); + TESTCASE( s[5] == '\0' ); + free( s ); + TESTCASE( ( s = calloc( 6, 1 ) ) != NULL ); + TESTCASE( s[0] == '\0' ); + TESTCASE( s[5] == '\0' ); + free( s ); + TESTCASE( ( s = calloc( 1, 6 ) ) != NULL ); + TESTCASE( s[0] == '\0' ); + TESTCASE( s[5] == '\0' ); + free( s ); + return TEST_RESULTS; +} + +#endif