MCPcopy Create free account
hub / github.com/beefytech/Beef / tc_realloc

Function tc_realloc

BeefTools/BeefMem/gperftools/src/debugallocation.cc:1188–1214  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1186}
1187
1188extern "C" PERFTOOLS_DLL_DECL void* tc_realloc(void* ptr, size_t size) __THROW {
1189 if (ptr == NULL) {
1190 ptr = do_debug_malloc_or_debug_cpp_alloc(size);
1191 MallocHook::InvokeNewHook(ptr, size);
1192 return ptr;
1193 }
1194 if (size == 0) {
1195 MallocHook::InvokeDeleteHook(ptr);
1196 DebugDeallocate(ptr, MallocBlock::kMallocType);
1197 return NULL;
1198 }
1199 MallocBlock* old = MallocBlock::FromRawPointer(ptr);
1200 old->Check(MallocBlock::kMallocType);
1201 MallocBlock* p = MallocBlock::Allocate(size, MallocBlock::kMallocType);
1202
1203 // If realloc fails we are to leave the old block untouched and
1204 // return null
1205 if (p == NULL) return NULL;
1206
1207 memcpy(p->data_addr(), old->data_addr(),
1208 (old->data_size() < size) ? old->data_size() : size);
1209 MallocHook::InvokeDeleteHook(ptr);
1210 MallocHook::InvokeNewHook(p->data_addr(), size);
1211 DebugDeallocate(ptr, MallocBlock::kMallocType);
1212 MALLOC_TRACE("realloc", p->data_size(), p->data_addr());
1213 return p->data_addr();
1214}
1215
1216extern "C" PERFTOOLS_DLL_DECL void* tc_new(size_t size) {
1217 void* ptr = debug_cpp_alloc(size, MallocBlock::kNewType, false);

Callers

nothing calls this directly

Calls 6

DebugDeallocateFunction · 0.70
AllocateFunction · 0.50
CheckMethod · 0.45
data_addrMethod · 0.45
data_sizeMethod · 0.45

Tested by

no test coverage detected