sw/source/core/doc/DocumentRedlineManager.cxx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-)
New commits: commit 033043c404c841860f241151d69c7b46640801b4 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Sat Nov 16 21:38:53 2024 +0000 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Sun Nov 17 15:41:03 2024 +0100 cid#1607919 Overflowed constant Change-Id: I842357000f3282521aa927921a5598fddaef5dee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176686 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Jenkins diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index 81f0585655ef..b6f2ba079fbf 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -2603,7 +2603,7 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange ) bool bChg = false; SwRedlineTable::size_type n = 0; //FIXME overlapping problem GetRedline( *pStt, &n ); - for ( ; n < maRedlineTable.size(); ++n) + while (n < maRedlineTable.size()) { SwRangeRedline * pRedline = maRedlineTable[ n ]; auto [pRedlineStart, pRedlineEnd] = pRedline->StartEnd(); @@ -2635,7 +2635,8 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange ) case 3: pRedline->InvalidateRange(SwRangeRedline::Invalidation::Remove); - maRedlineTable.DeleteAndDestroy( n-- ); + maRedlineTable.DeleteAndDestroy( n ); + // loop again with the same n to iterate to the next entry pRedline = nullptr; break; } @@ -2655,6 +2656,8 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange ) } else if (*pEnd < *pRedlineStart) break; + if (pRedline) + ++n; } return bChg; commit 5d2de069349528a137c8136233635dc3b9cc5f83 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Sat Nov 16 21:36:46 2024 +0000 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Sun Nov 17 15:40:56 2024 +0100 pNew is only possible if there is a pRedLine so we can move this inside the other conditional Change-Id: I63259598d5165e3aafbf0c1cfef70ccb1b16bb38 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176685 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Jenkins diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index d55bbd577f93..81f0585655ef 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -2639,14 +2639,19 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange ) pRedline = nullptr; break; } - if (pRedline && !pRedline->HasValidRange()) + + if (pRedline) { - // re-insert - maRedlineTable.Remove( n ); - maRedlineTable.Insert( pRedline, n ); + if (!pRedline->HasValidRange()) + { + // re-insert + maRedlineTable.Remove( n ); + maRedlineTable.Insert( pRedline, n ); + } + + if (pNew) + maRedlineTable.Insert(pNew, n); } - if( pNew ) - maRedlineTable.Insert( pNew, n ); } else if (*pEnd < *pRedlineStart) break;