#include #include "private.h" #include "context.h" #include "node.h" void lub_heap_post_realloc(lub_heap_t *this, char **ptr) { /* only act if we are about to re-enable the monitoring */ if((0 < lub_heap_frame_count) && ( 2 > this->suppress)) { if(NULL != *ptr) { stackframe_t frame; lub_heap_node_t *node = (lub_heap_node_t*)*ptr; const lub_heap_context_t *context; lub_heap__get_stackframe(&frame,lub_heap_frame_count); /* make sure we break any recursive behaviour */ ++this->suppress; context = lub_heap_context_find_or_create(this,&frame); --this->suppress; /* initialise the node instance */ lub_heap_node_init(node,(lub_heap_context_t*)context); /* make sure we doctor the pointer given back to the client */ *ptr = lub_heap_node__get_ptr(node); } } } void lub_heap_leak_suppress_detection(lub_heap_t *this) { ++this->suppress; } void lub_heap_leak_restore_detection(lub_heap_t *this) { --this->suppress; }