#include #include "private.h" #include "context.h" #include "node.h" /* * This function */ void lub_heap_pre_realloc(lub_heap_t *this, char **ptr, size_t *size) { if(*ptr) { /* is this a pointer to a node in the "leak" trees? */ lub_heap_node_t *node = lub_heap_node_from_start_of_block_ptr(*ptr); if(NULL != node) { lub_heap_node_fini(node); /* move the pointer to the start of the block */ *ptr = (char*)node; } } if((0 < lub_heap_frame_count)) { size_t old_size = *size; if(old_size) { /* allocate enough bytes for a node */ *size += lub_heap_node__get_instanceSize(); if(*size < old_size) { /* we've wrapped the size variable * make sure we fail the allocation */ *size = (size_t)-1; } } } }