diff options
-rw-r--r-- | epan/wmem/wmem_allocator_block.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/epan/wmem/wmem_allocator_block.c b/epan/wmem/wmem_allocator_block.c index c4f0871468..74f4d943a0 100644 --- a/epan/wmem/wmem_allocator_block.c +++ b/epan/wmem/wmem_allocator_block.c @@ -846,13 +846,20 @@ wmem_block_realloc_jumbo(wmem_block_allocator_t *allocator, block = WMEM_CHUNK_TO_BLOCK(chunk); - wmem_block_remove_from_block_list(allocator, block); - block = (wmem_block_hdr_t *) g_realloc(block, size + WMEM_BLOCK_HEADER_SIZE + WMEM_CHUNK_HEADER_SIZE); - wmem_block_add_to_block_list(allocator, block); + if (block->next) { + block->next->prev = block; + } + + if (block->prev) { + block->prev->next = block; + } + else { + allocator->block_list = block; + } return WMEM_CHUNK_TO_DATA(WMEM_BLOCK_TO_CHUNK(block)); } |