//===-- calloc.c ----------------------------------------------------------===// // // The KLEE Symbolic Virtual Machine // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include #include // DWD - I prefer to be internal #if 0 void *calloc(size_t nmemb, size_t size) { unsigned nbytes = nmemb * size; void *addr = malloc(nbytes); if(addr) memset(addr, 0, nbytes); return addr; } // Always reallocate. void *realloc(void *ptr, size_t nbytes) { if(!ptr) return malloc(nbytes); if(!nbytes) { free(ptr); return 0; } unsigned copy_nbytes = klee_get_obj_size(ptr); //printf("REALLOC: current object = %d bytes!\n", copy_nbytes); void *addr = malloc(nbytes); if(addr) { // shrinking if(copy_nbytes > nbytes) copy_nbytes = nbytes; //printf("REALLOC: copying = %d bytes!\n", copy_nbytes); memcpy(addr, ptr, copy_nbytes); free(ptr); } return addr; } #endif