123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #include <string.h>
- #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;
- }
- }
- }
- }
|