void h_replace_free ( ThreadId tid, void* p ) { // Should arguably check here if p.vseg matches the segID of the // pointed-to block... unfortunately, by this stage, we don't know what // p.vseg is, because we don't know the address of p (the p here is a // copy, and we've lost the address of its source). To do so would // require passing &p in, which would require rewriting part of // vg_replace_malloc.c... argh. // // However, Memcheck does free checking, and will catch almost all // violations this checking would have caught. (Would only miss if we // unluckily passed an unrelated pointer to the very start of a heap // block that was unrelated to that block. This is very unlikely!) So // we haven't lost much. handle_free_heap(tid, p); }
void h_replace_free ( ThreadId tid, void* p ) { handle_free_heap(tid, p); }
void h_replace___builtin_vec_delete ( ThreadId tid, void* p ) { handle_free_heap(tid, p); }