Commit 6202aa7c authored by heikki@donna.mysql.fi's avatar heikki@donna.mysql.fi

mem0mem.c:

  Add more diagnostic code to cath possible memory corruption
parent 8a7ecfb9
...@@ -50,7 +50,7 @@ of the blocks stay the same. An exception is, of course, the case ...@@ -50,7 +50,7 @@ of the blocks stay the same. An exception is, of course, the case
where the caller requests a memory buffer whose size is where the caller requests a memory buffer whose size is
bigger than the threshold. In that case a block big enough must bigger than the threshold. In that case a block big enough must
be allocated. be allocated.
The heap is physically arranged so that if the current block The heap is physically arranged so that if the current block
becomes full, a new block is allocated and always inserted in the becomes full, a new block is allocated and always inserted in the
chain of blocks as the last block. chain of blocks as the last block.
...@@ -119,6 +119,10 @@ mem_heap_create_block( ...@@ -119,6 +119,10 @@ mem_heap_create_block(
ut_ad((type == MEM_HEAP_DYNAMIC) || (type == MEM_HEAP_BUFFER) ut_ad((type == MEM_HEAP_DYNAMIC) || (type == MEM_HEAP_BUFFER)
|| (type == MEM_HEAP_BUFFER + MEM_HEAP_BTR_SEARCH)); || (type == MEM_HEAP_BUFFER + MEM_HEAP_BTR_SEARCH));
if (heap && heap->magic_n != MEM_BLOCK_MAGIC_N) {
mem_analyze_corruption((byte*)heap);
}
/* In dynamic allocation, calculate the size: block header + data. */ /* In dynamic allocation, calculate the size: block header + data. */
if (init_block != NULL) { if (init_block != NULL) {
...@@ -251,6 +255,10 @@ mem_heap_block_free( ...@@ -251,6 +255,10 @@ mem_heap_block_free(
ulint len; ulint len;
ibool init_block; ibool init_block;
if (block->magic_n != MEM_BLOCK_MAGIC_N) {
mem_analyze_corruption((byte*)block);
}
UT_LIST_REMOVE(list, heap->base, block); UT_LIST_REMOVE(list, heap->base, block);
type = heap->type; type = heap->type;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment