sw/source/core/doc/DocumentRedlineManager.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
New commits: commit 13ca7ea1e8142e02f3518de5d0a1999701c925c9 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Fri Jul 15 20:55:35 2022 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Fri Dec 16 13:27:08 2022 +0000 tdf#149548 sw: don't rely on binary search in SplitRedline() The problem is that for this bugdoc overlapping redlines are created by writerfilter, and so this one survives the split in SwDoc::TextToTable() when creating a cell on node 146 to 149: $125 = (SwRangeRedline) { <SwPaM> = SwPaM = { point = SwPosition (node 155, offset 156), mark = SwPosition (node 146, offset 0) }, It's not found in GetRedline(), as that relies on the redlines never overlapping, so isn't split at end of 149. Then when copying to the clipboard, all redlines are deleted and this deletes cell start and end nodes, while the cell's SwTableBox is still referenced elsewhere. (reportedly somehow a regression from commit c4cf85766453982f1aa94a7f2cb22af19ed100be) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137110 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit de49e1c55dc10ce1b59345af5cc49fde3adf65b7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138286 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit fa5838b018a5f1e5b1616bbacbb242eb4fac998a) Change-Id: I6466e6777cd83c7625381f7049f30c8a2f487af1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144220 Tested-by: Michael Stahl <michael.st...@allotropia.de> Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index e11c1c6f2c4b..718492ab3f79 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -2325,7 +2325,7 @@ bool DocumentRedlineManager::SplitRedline( const SwPaM& rRange ) SwRedlineTable::size_type n = 0; const SwPosition* pStt = rRange.Start(); const SwPosition* pEnd = rRange.End(); - GetRedline( *pStt, &n ); + //FIXME overlapping problem GetRedline( *pStt, &n ); for ( ; n < mpRedlineTable->size(); ++n) { SwRangeRedline * pRedline = (*mpRedlineTable)[ n ];