/* * Copyright (c) Jon Santmyer. * This source file is released under the LGPL Version 3 as detailed in * the LICENSE file provided in the following repository: * https://git.jonsantmyer.com/heap/ * */ #include "malloc.h" #include #include void* __calloc_impl(heap_cache_t *cache, size_t nmemb, size_t w) { w = REALW(w); void *ptr = __malloc_impl(cache, w * nmemb); if(ptr == NULL) return NULL; if(errno != 0) return (void*)-1; /* Zero newly allocated memory as per spec.*/ memset(ptr, 0, w * nmemb); return ptr; }