void *zrealloc(void *ptr, size_t size) { #ifndef HAVE_MALLOC_SIZE void *realPtr; #endif size_t oldSize; void *newPtr; if(ptr == NULL) return zmalloc(size); #ifdef HAVE_MALLOC_SIZE oldSize = zmalloc_size(ptr); newPtr = realloc(ptr, size); if(!newPtr) zmalloc_oom(size); update_zmalloc_stat_free(oldSize); update_zmalloc_stat_alloc(zmalloc_size(newPtr), size); #else realPtr = (char *)ptr -PREFIX_SIZE; oldSize = *((size_t *)realPtr); newPtr = realloc(realPtr, size+PREFIX_SIZE); if(!newPtr) malloc_oom(size); *((size_t *)newPtr) = size; update_zmalloc_stat_free(oldSize); update_zmalloc_stat_alloc(size, size); return (char *)newPtr + PREFIX_SIZE #endif }
void * skynet_realloc(void *ptr, size_t size) { if (ptr == NULL) return skynet_malloc(size); void* rawptr = clean_prefix(ptr); void *newptr = je_realloc(rawptr, size+PREFIX_SIZE); if(!newptr) malloc_oom(size); return fill_prefix(newptr); }
void * skynet_calloc(size_t nmemb,size_t size) { void* ptr = je_calloc(nmemb + ((PREFIX_SIZE+size-1)/size), size ); if(!ptr) malloc_oom(size); return fill_prefix(ptr); }
void * skynet_malloc(size_t size) { void* ptr = je_malloc(size + PREFIX_SIZE); if(!ptr) malloc_oom(size); return fill_prefix(ptr); }
void * skynet_memalign(size_t alignment, size_t size) { void* ptr = je_memalign(alignment, size + PREFIX_SIZE); if(!ptr) malloc_oom(size); return fill_prefix(ptr); }