sw/source/core/SwNumberTree/SwNumberTree.cxx |   19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

New commits:
commit 56f0d066499aedbbce8725e73ab2d6cd1c580eee
Author:     Caolán McNamara <[email protected]>
AuthorDate: Sun Mar 1 19:12:11 2026 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Thu Mar 5 22:08:17 2026 +0100

    Related: ofz#422030803 Timeout, use extract/insert
    
    Change-Id: Icb40c3218a34b7423dfdb1261b29c76954c062ab
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200727
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[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() )

Reply via email to