Resolves: tdf#90579 swap_single_to_multi_blocks seems broken
when there is associated data in the src. Its copies those pointers into the block that will appear in the destination. Then can destroy the source block, which deletes the contents of those pointers, and then inserts the new block which has dangling pointers to the deleted data. https://gitlab.com/mdds/mdds/merge_requests/2 Change-Id: Id9614d95652c8032b03cb5748a284917043d8d21
This commit is contained in:
parent
cc355c50e3
commit
9ec54e9240
2 changed files with 24 additions and 0 deletions
1
external/mdds/UnpackedTarball_mdds.mk
vendored
1
external/mdds/UnpackedTarball_mdds.mk
vendored
|
@ -14,6 +14,7 @@ $(eval $(call gb_UnpackedTarball_set_tarball,mdds,$(MDDS_TARBALL)))
|
|||
$(eval $(call gb_UnpackedTarball_set_patchlevel,mdds,0))
|
||||
|
||||
$(eval $(call gb_UnpackedTarball_add_patches,mdds,\
|
||||
external/mdds/tdf90579.patch.0 \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
|
23
external/mdds/tdf90579.patch.0
vendored
Normal file
23
external/mdds/tdf90579.patch.0
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
diff --git a/include/mdds/multi_type_vector_def.inl b/include/mdds/multi_type_vector_def.inl
|
||||
index 0e2a15a..fe9c767 100644
|
||||
--- include/mdds/multi_type_vector_def.inl
|
||||
+++ include/mdds/multi_type_vector_def.inl
|
||||
@@ -2306,6 +2306,9 @@ void multi_type_vector<_CellBlockFunc, _EventFunc>::swap_single_to_multi_blocks(
|
||||
{
|
||||
// Source range is at the top of a block.
|
||||
|
||||
+ // Shrink the current block by erasing the top part.
|
||||
+ element_block_func::erase(*blk_src->mp_data, 0, len);
|
||||
+
|
||||
if (src_tail_len == 0)
|
||||
{
|
||||
// the whole block needs to be replaced.
|
||||
@@ -2314,8 +2317,6 @@ void multi_type_vector<_CellBlockFunc, _EventFunc>::swap_single_to_multi_blocks(
|
||||
}
|
||||
else
|
||||
{
|
||||
- // Shrink the current block by erasing the top part.
|
||||
- element_block_func::erase(*blk_src->mp_data, 0, len);
|
||||
blk_src->m_size -= len;
|
||||
}
|
||||
|
Loading…
Reference in a new issue