sw/source/core/SwNumberTree/SwNumberTree.cxx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)
New commits: commit 79d4b0e59f3d65d355ad7de87c4640dc5f880b59 Author: Caolán McNamara <[email protected]> AuthorDate: Sun Mar 1 19:12:11 2026 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Fri Mar 6 20:24:41 2026 +0100 Related: ofz#422030803 Timeout, use extract/insert Change-Id: Icb40c3218a34b7423dfdb1261b29c76954c062ab Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200728 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/source/core/SwNumberTree/SwNumberTree.cxx b/sw/source/core/SwNumberTree/SwNumberTree.cxx index 1b5b3646934d..a035fbf89b64 100644 --- a/sw/source/core/SwNumberTree/SwNumberTree.cxx +++ b/sw/source/core/SwNumberTree/SwNumberTree.cxx @@ -336,19 +336,18 @@ void SwNumberTreeNode::MoveGreaterChildren( SwNumberTreeNode& _rCompareNode, // move children if (aItUpper != mChildren.end()) { - tSwNumberTreeChildren::iterator aIt; - for (aIt = aItUpper; aIt != mChildren.end(); ++aIt) - (*aIt)->mpParent = &_rDestNode; - - _rDestNode.mChildren.insert(aItUpper, mChildren.end()); - // #i60652# - // Because <mChildren.erase(aItUpper, mChildren.end())> could destroy - // the element, which is referenced by <mItLastValid>, it's needed to - // adjust <mItLastValid> before erasing <aIt>. + // Adjust <mItLastValid> before modifying mChildren, because + // erase/extract could destroy the element it references. SetLastValid( mChildren.end() ); - mChildren.erase(aItUpper, mChildren.end()); + for (auto aIt = aItUpper; aIt != mChildren.end(); ) + { + (*aIt)->mpParent = &_rDestNode; + auto aItNext = std::next(aIt); + _rDestNode.mChildren.insert(mChildren.extract(aIt)); + aIt = aItNext; + } // #i60652# if ( !mChildren.empty() )
