summaryrefslogblamecommitdiffstats
path: root/calloc.c
blob: 291a16dcafecc73419ec800f15f29bb2867334c6 (plain) (tree)
1
2
3
4
5
6
7






                                                                       















                                                          
/*
 * 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 <string.h>
#include <errno.h>

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;
}