Blame SOURCES/0001-During-DocumentRedlineManager-SetRedlineMode-the-arr.patch

ebc4bd
From f3974a01283674f016ebd564652964302b1ab1e8 Mon Sep 17 00:00:00 2001
ebc4bd
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
ebc4bd
Date: Fri, 30 Jan 2015 15:34:30 +0000
ebc4bd
Subject: [PATCH] During DocumentRedlineManager::SetRedlineMode the array
ebc4bd
 becomes unsorted
ebc4bd
MIME-Version: 1.0
ebc4bd
Content-Type: text/plain; charset=UTF-8
ebc4bd
Content-Transfer-Encoding: 8bit
ebc4bd
ebc4bd
so GetPos cannot be used safely, so pass down the known index
ebc4bd
of the redline and propogate it everywhere the redline goes
ebc4bd
ebc4bd
This reverts
ebc4bd
ebc4bd
commit 36e158ce7a0effb130936ba4598a193102faa6a1
ebc4bd
Author: Caolán McNamara <caolanm@redhat.com>
ebc4bd
Date:   Mon Jan 19 12:09:17 2015 +0000
ebc4bd
ebc4bd
    if we change the keys we have to resort based on the new keys
ebc4bd
ebc4bd
which tried to keep the table sorted, but thats no use because
ebc4bd
DocumentRedlineManager::SetRedlineMode loops over by index
ebc4bd
so sorting the table during the process busts that.
ebc4bd
ebc4bd
Taking a copy of the entries and looping over that shows another
ebc4bd
gadzillion problems.
ebc4bd
ebc4bd
So try this approach instead.
ebc4bd
ebc4bd
I imagine it should be possible to calculate the correct
ebc4bd
current index of pRedl in DocumentRedlineManager::AppendRedline
ebc4bd
but for now assume that we are sorted correctly at that
ebc4bd
point and can use GetPos
ebc4bd
ebc4bd
(cherry picked from commit a5a20187c3a5e5956492f932c49501f9547e4915)
ebc4bd
ebc4bd
Conflicts:
ebc4bd
	sw/source/core/doc/DocumentRedlineManager.cxx
ebc4bd
	sw/source/core/doc/docredln.cxx
ebc4bd
	sw/source/core/undo/unredln.cxx
ebc4bd
ebc4bd
Change-Id: If092dce185e3b36fd256db390132358cba155847
ebc4bd
---
ebc4bd
 sw/inc/docary.hxx               |  1 +
ebc4bd
 sw/inc/redline.hxx              | 12 +++---
ebc4bd
 sw/source/core/doc/docredln.cxx | 90 ++++++++++++++++++++---------------------
ebc4bd
 sw/source/core/undo/unredln.cxx |  2 +-
ebc4bd
 4 files changed, 51 insertions(+), 54 deletions(-)
ebc4bd
ebc4bd
diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
ebc4bd
index 94f8229..34f22ed 100644
ebc4bd
--- a/sw/inc/docary.hxx
ebc4bd
+++ b/sw/inc/docary.hxx
ebc4bd
@@ -195,6 +195,7 @@ public:
ebc4bd
     using _SwRedlineTbl::size;
ebc4bd
     using _SwRedlineTbl::operator[];
ebc4bd
     using _SwRedlineTbl::empty;
ebc4bd
+    using _SwRedlineTbl::Resort;
ebc4bd
 };
ebc4bd
 
ebc4bd
 /// Table that holds 'extra' redlines, such as 'table row insert\delete', 'paragraph moves' etc...
ebc4bd
diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx
ebc4bd
index ab1945b..b639063 100644
ebc4bd
--- a/sw/inc/redline.hxx
ebc4bd
+++ b/sw/inc/redline.hxx
ebc4bd
@@ -190,8 +190,8 @@ class SW_DLLPUBLIC SwRangeRedline : public SwPaM
ebc4bd
 
ebc4bd
     void MoveToSection();
ebc4bd
     void CopyToSection();
ebc4bd
-    void DelCopyOfSection();
ebc4bd
-    void MoveFromSection();
ebc4bd
+    void DelCopyOfSection(size_t nMyPos);
ebc4bd
+    void MoveFromSection(size_t nMyPos);
ebc4bd
 
ebc4bd
 public:
ebc4bd
     SwRangeRedline( RedlineType_t eType, const SwPaM& rPam );
ebc4bd
@@ -263,10 +263,10 @@ public:
ebc4bd
     // hide the Del-Redlines via Copy and Delete.
ebc4bd
     // Otherwise at Move the attribution would be handled incorrectly.
ebc4bd
     // All other callers must always give 0.
ebc4bd
-    void CallDisplayFunc( sal_uInt16 nLoop = 0 );
ebc4bd
-    void Show( sal_uInt16 nLoop = 0 );
ebc4bd
-    void Hide( sal_uInt16 nLoop = 0 );
ebc4bd
-    void ShowOriginal( sal_uInt16 nLoop = 0 );
ebc4bd
+    void CallDisplayFunc(sal_uInt16 nLoop, size_t nMyPos);
ebc4bd
+    void Show(sal_uInt16 nLoop , size_t nMyPos);
ebc4bd
+    void Hide(sal_uInt16 nLoop , size_t nMyPos);
ebc4bd
+    void ShowOriginal(sal_uInt16 nLoop, size_t nMyPos);
ebc4bd
 
ebc4bd
     /// Calculates the intersection with text node number nNdIdx.
ebc4bd
     void CalcStartEnd(sal_uLong nNdIdx, sal_Int32& rStart, sal_Int32& rEnd) const;
ebc4bd
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
ebc4bd
index 8d3d704..fd2730e 100644
ebc4bd
--- a/sw/source/core/doc/docredln.cxx
ebc4bd
+++ b/sw/source/core/doc/docredln.cxx
ebc4bd
@@ -157,7 +157,7 @@ void SwDoc::SetRedlineMode( RedlineMode_t eMode )
ebc4bd
             bool bSaveInXMLImportFlag = IsInXMLImport();
ebc4bd
             SetInXMLImport( false );
ebc4bd
             // and then hide/display everything
ebc4bd
-            void (SwRangeRedline::*pFnc)( sal_uInt16 ) = 0;
ebc4bd
+            void (SwRangeRedline::*pFnc)(sal_uInt16, size_t) = 0;
ebc4bd
 
ebc4bd
             switch( nsRedlineMode_t::REDLINE_SHOW_MASK & eMode )
ebc4bd
             {
ebc4bd
@@ -179,10 +179,17 @@ void SwDoc::SetRedlineMode( RedlineMode_t eMode )
ebc4bd
 
ebc4bd
             _CHECK_REDLINE( this )
ebc4bd
 
ebc4bd
-            if( pFnc )
ebc4bd
-                for( sal_uInt16 nLoop = 1; nLoop <= 2; ++nLoop )
ebc4bd
-                    for( sal_uInt16 i = 0; i < mpRedlineTbl->size(); ++i )
ebc4bd
-                        ((*mpRedlineTbl)[ i ]->*pFnc)( nLoop );
ebc4bd
+            if (pFnc)
ebc4bd
+            {
ebc4bd
+                for (sal_uInt16 nLoop = 1; nLoop <= 2; ++nLoop)
ebc4bd
+                    for (size_t i = 0; i < mpRedlineTbl->size(); ++i)
ebc4bd
+                        ((*mpRedlineTbl)[i]->*pFnc)(nLoop, i);
ebc4bd
+
ebc4bd
+                //SwRangeRedline::MoveFromSection routinely changes
ebc4bd
+                //the keys that mpRedlineTbl is sorted by
ebc4bd
+                mpRedlineTbl->Resort();
ebc4bd
+            }
ebc4bd
+
ebc4bd
             _CHECK_REDLINE( this )
ebc4bd
             SetInXMLImport( bSaveInXMLImportFlag );
ebc4bd
         }
ebc4bd
@@ -705,7 +712,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
ebc4bd
                                 // We insert temporarily so that pNew is
ebc4bd
                                 // also dealt with when moving the indices.
ebc4bd
                                 mpRedlineTbl->Insert( pNewRedl );
ebc4bd
-                                pRedl->Show();
ebc4bd
+                                pRedl->Show(0, mpRedlineTbl->GetPos(pRedl));
ebc4bd
                                 mpRedlineTbl->Remove( pNewRedl );
ebc4bd
                                 pRStt = pRedl->Start();
ebc4bd
                                 pREnd = pRedl->End();
ebc4bd
@@ -882,7 +889,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
ebc4bd
                                 pRedl->PushData( *pNewRedl );
ebc4bd
                                 delete pNewRedl, pNewRedl = 0;
ebc4bd
                                 if( IsHideChanges( meRedlineMode ))
ebc4bd
-                                    pRedl->Hide();
ebc4bd
+                                    pRedl->Hide(0, mpRedlineTbl->GetPos(pRedl));
ebc4bd
                                 bCompress = true;
ebc4bd
                             }
ebc4bd
                             break;
ebc4bd
@@ -946,7 +953,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
ebc4bd
                                     if( IsHideChanges( meRedlineMode ))
ebc4bd
                                     {
ebc4bd
                                         mpRedlineTbl->Insert( pNewRedl );
ebc4bd
-                                        pRedl->Hide();
ebc4bd
+                                        pRedl->Hide(0, mpRedlineTbl->GetPos(pRedl));
ebc4bd
                                         mpRedlineTbl->Remove( pNewRedl );
ebc4bd
                                     }
ebc4bd
                                 }
ebc4bd
@@ -974,7 +981,7 @@ bool SwDoc::AppendRedline( SwRangeRedline* pNewRedl, bool bCallDelete )
ebc4bd
                                     if( IsHideChanges( meRedlineMode ))
ebc4bd
                                     {
ebc4bd
                                         mpRedlineTbl->Insert( pNewRedl );
ebc4bd
-                                        pRedl->Hide();
ebc4bd
+                                        pRedl->Hide(0, mpRedlineTbl->GetPos(pRedl));
ebc4bd
                                         mpRedlineTbl->Remove( pNewRedl );
ebc4bd
                                     }
ebc4bd
                                 }
ebc4bd
@@ -1255,7 +1262,7 @@ void SwDoc::CompressRedlines()
ebc4bd
 {
ebc4bd
     _CHECK_REDLINE( this )
ebc4bd
 
ebc4bd
-    void (SwRangeRedline::*pFnc)(sal_uInt16) = 0;
ebc4bd
+    void (SwRangeRedline::*pFnc)(sal_uInt16, size_t) = 0;
ebc4bd
     switch( nsRedlineMode_t::REDLINE_SHOW_MASK & meRedlineMode )
ebc4bd
     {
ebc4bd
     case nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE:
ebc4bd
@@ -1283,14 +1290,15 @@ void SwDoc::CompressRedlines()
ebc4bd
             !pCurEnd->nNode.GetNode().StartOfSectionNode()->IsTableNode() )
ebc4bd
         {
ebc4bd
             // we then can merge them
ebc4bd
-            pPrev->Show();
ebc4bd
-            pCur->Show();
ebc4bd
+            size_t nPrevIndex = n-1;
ebc4bd
+            pPrev->Show(0, nPrevIndex);
ebc4bd
+            pCur->Show(0, n);
ebc4bd
 
ebc4bd
             pPrev->SetEnd( *pCur->End() );
ebc4bd
             mpRedlineTbl->DeleteAndDestroy( n );
ebc4bd
             --n;
ebc4bd
             if( pFnc )
ebc4bd
-                (pPrev->*pFnc)(0);
ebc4bd
+                (pPrev->*pFnc)(0, nPrevIndex);
ebc4bd
         }
ebc4bd
     }
ebc4bd
     _CHECK_REDLINE( this )
ebc4bd
@@ -2751,8 +2759,10 @@ bool SwRedlineTbl::Insert( SwRangeRedline* p, bool bIns )
ebc4bd
     bool bRet = false;
ebc4bd
     if( p->HasValidRange() )
ebc4bd
     {
ebc4bd
-        bRet = insert( p ).second;
ebc4bd
-        p->CallDisplayFunc();
ebc4bd
+        std::pair<_SwRedlineTbl::const_iterator, bool> rv = insert( p );
ebc4bd
+        size_t nP = rv.first - begin();
ebc4bd
+        bRet = rv.second;
ebc4bd
+        p->CallDisplayFunc(0, nP);
ebc4bd
     }
ebc4bd
     else if( bIns )
ebc4bd
         bRet = InsertWithValidRanges( p );
ebc4bd
@@ -2771,7 +2781,7 @@ bool SwRedlineTbl::Insert( SwRangeRedline* p, sal_uInt16& rP, bool bIns )
ebc4bd
         std::pair<_SwRedlineTbl::const_iterator, bool> rv = insert( p );
ebc4bd
         rP = rv.first - begin();
ebc4bd
         bRet = rv.second;
ebc4bd
-        p->CallDisplayFunc();
ebc4bd
+        p->CallDisplayFunc(0, rP);
ebc4bd
     }
ebc4bd
     else if( bIns )
ebc4bd
         bRet = InsertWithValidRanges( p, &rP );
ebc4bd
@@ -2873,7 +2883,7 @@ bool SwRedlineTbl::InsertWithValidRanges( SwRangeRedline* p, sal_uInt16* pInsPos
ebc4bd
                 pNew->HasValidRange() &&
ebc4bd
                 Insert( pNew, nInsPos ) )
ebc4bd
             {
ebc4bd
-                pNew->CallDisplayFunc();
ebc4bd
+                pNew->CallDisplayFunc(0, nInsPos);
ebc4bd
                 bAnyIns = true;
ebc4bd
                 pNew = 0;
ebc4bd
                 if( pInsPos && *pInsPos < nInsPos )
ebc4bd
@@ -3382,23 +3392,23 @@ bool SwRangeRedline::HasValidRange() const
ebc4bd
     return false;
ebc4bd
 }
ebc4bd
 
ebc4bd
-void SwRangeRedline::CallDisplayFunc( sal_uInt16 nLoop )
ebc4bd
+void SwRangeRedline::CallDisplayFunc(sal_uInt16 nLoop, size_t nMyPos)
ebc4bd
 {
ebc4bd
     switch( nsRedlineMode_t::REDLINE_SHOW_MASK & GetDoc()->GetRedlineMode() )
ebc4bd
     {
ebc4bd
     case nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE:
ebc4bd
-        Show( nLoop );
ebc4bd
+        Show(nLoop, nMyPos);
ebc4bd
         break;
ebc4bd
     case nsRedlineMode_t::REDLINE_SHOW_INSERT:
ebc4bd
-        Hide( nLoop );
ebc4bd
+        Hide(nLoop, nMyPos);
ebc4bd
         break;
ebc4bd
     case nsRedlineMode_t::REDLINE_SHOW_DELETE:
ebc4bd
-        ShowOriginal( nLoop );
ebc4bd
+        ShowOriginal(nLoop, nMyPos);
ebc4bd
         break;
ebc4bd
     }
ebc4bd
 }
ebc4bd
 
ebc4bd
-void SwRangeRedline::Show( sal_uInt16 nLoop )
ebc4bd
+void SwRangeRedline::Show(sal_uInt16 nLoop, size_t nMyPos)
ebc4bd
 {
ebc4bd
     if( 1 <= nLoop )
ebc4bd
     {
ebc4bd
@@ -3411,12 +3421,12 @@ void SwRangeRedline::Show( sal_uInt16 nLoop )
ebc4bd
         {
ebc4bd
         case nsRedlineType_t::REDLINE_INSERT:           // Content has been inserted
ebc4bd
             bIsVisible = true;
ebc4bd
-            MoveFromSection();
ebc4bd
+            MoveFromSection(nMyPos);
ebc4bd
             break;
ebc4bd
 
ebc4bd
         case nsRedlineType_t::REDLINE_DELETE:           // Content has been deleted
ebc4bd
             bIsVisible = true;
ebc4bd
-            MoveFromSection();
ebc4bd
+            MoveFromSection(nMyPos);
ebc4bd
             break;
ebc4bd
 
ebc4bd
         case nsRedlineType_t::REDLINE_FORMAT:           // Attributes have been applied
ebc4bd
@@ -3430,7 +3440,7 @@ void SwRangeRedline::Show( sal_uInt16 nLoop )
ebc4bd
     }
ebc4bd
 }
ebc4bd
 
ebc4bd
-void SwRangeRedline::Hide( sal_uInt16 nLoop )
ebc4bd
+void SwRangeRedline::Hide(sal_uInt16 nLoop, size_t nMyPos)
ebc4bd
 {
ebc4bd
     SwDoc* pDoc = GetDoc();
ebc4bd
     RedlineMode_t eOld = pDoc->GetRedlineMode();
ebc4bd
@@ -3442,7 +3452,7 @@ void SwRangeRedline::Hide( sal_uInt16 nLoop )
ebc4bd
     case nsRedlineType_t::REDLINE_INSERT:           // Content has been inserted
ebc4bd
         bIsVisible = true;
ebc4bd
         if( 1 <= nLoop )
ebc4bd
-            MoveFromSection();
ebc4bd
+            MoveFromSection(nMyPos);
ebc4bd
         break;
ebc4bd
 
ebc4bd
     case nsRedlineType_t::REDLINE_DELETE:           // Content has been deleted
ebc4bd
@@ -3451,7 +3461,7 @@ void SwRangeRedline::Hide( sal_uInt16 nLoop )
ebc4bd
         {
ebc4bd
         case 0: MoveToSection();    break;
ebc4bd
         case 1: CopyToSection();    break;
ebc4bd
-        case 2: DelCopyOfSection(); break;
ebc4bd
+        case 2: DelCopyOfSection(nMyPos); break;
ebc4bd
         }
ebc4bd
         break;
ebc4bd
 
ebc4bd
@@ -3466,7 +3476,7 @@ void SwRangeRedline::Hide( sal_uInt16 nLoop )
ebc4bd
     pDoc->SetRedlineMode_intern( eOld );
ebc4bd
 }
ebc4bd
 
ebc4bd
-void SwRangeRedline::ShowOriginal( sal_uInt16 nLoop )
ebc4bd
+void SwRangeRedline::ShowOriginal(sal_uInt16 nLoop, size_t nMyPos)
ebc4bd
 {
ebc4bd
     SwDoc* pDoc = GetDoc();
ebc4bd
     RedlineMode_t eOld = pDoc->GetRedlineMode();
ebc4bd
@@ -3487,14 +3497,14 @@ void SwRangeRedline::ShowOriginal( sal_uInt16 nLoop )
ebc4bd
         {
ebc4bd
         case 0: MoveToSection();    break;
ebc4bd
         case 1: CopyToSection();    break;
ebc4bd
-        case 2: DelCopyOfSection(); break;
ebc4bd
+        case 2: DelCopyOfSection(nMyPos); break;
ebc4bd
         }
ebc4bd
         break;
ebc4bd
 
ebc4bd
     case nsRedlineType_t::REDLINE_DELETE:           // Inhalt wurde eingefuegt
ebc4bd
         bIsVisible = true;
ebc4bd
         if( 1 <= nLoop )
ebc4bd
-            MoveFromSection();
ebc4bd
+            MoveFromSection(nMyPos);
ebc4bd
         break;
ebc4bd
 
ebc4bd
     case nsRedlineType_t::REDLINE_FORMAT:           // Attributes have been applied
ebc4bd
@@ -3725,7 +3735,7 @@ void SwRangeRedline::CopyToSection()
ebc4bd
     }
ebc4bd
 }
ebc4bd
 
ebc4bd
-void SwRangeRedline::DelCopyOfSection()
ebc4bd
+void SwRangeRedline::DelCopyOfSection(size_t nMyPos)
ebc4bd
 {
ebc4bd
     if( pCntntSect )
ebc4bd
     {
ebc4bd
@@ -3772,7 +3782,7 @@ void SwRangeRedline::DelCopyOfSection()
ebc4bd
                 // bDelLastPara condition above), only redlines before the
ebc4bd
                 // current ones can be affected.
ebc4bd
                 const SwRedlineTbl& rTbl = pDoc->GetRedlineTbl();
ebc4bd
-                sal_uInt16 n = rTbl.GetPos( this );
ebc4bd
+                sal_uInt16 n = nMyPos;
ebc4bd
                 OSL_ENSURE( n != USHRT_MAX, "How strange. We don't exist!" );
ebc4bd
                 for( bool bBreak = false; !bBreak && n > 0; )
ebc4bd
                 {
ebc4bd
@@ -3813,16 +3823,13 @@ void SwRangeRedline::DelCopyOfSection()
ebc4bd
     }
ebc4bd
 }
ebc4bd
 
ebc4bd
-void SwRangeRedline::MoveFromSection()
ebc4bd
+void SwRangeRedline::MoveFromSection(size_t nMyPos)
ebc4bd
 {
ebc4bd
     if( pCntntSect )
ebc4bd
     {
ebc4bd
         SwDoc* pDoc = GetDoc();
ebc4bd
         const SwRedlineTbl& rTbl = pDoc->GetRedlineTbl();
ebc4bd
         std::vector<SwPosition*> aBeforeArr, aBehindArr;
ebc4bd
-        typedef std::map<sal_uInt16, SwRangeRedline*> IndexAndRange;
ebc4bd
-        IndexAndRange aIndexAndRangeMap;
ebc4bd
-        sal_uInt16 nMyPos = rTbl.GetPos( this );
ebc4bd
         OSL_ENSURE( this, "this is not in the array?" );
ebc4bd
         bool bBreak = false;
ebc4bd
         sal_uInt16 n;
ebc4bd
@@ -3834,14 +3841,12 @@ void SwRangeRedline::MoveFromSection()
ebc4bd
             {
ebc4bd
                 SwRangeRedline* pRedl = rTbl[n];
ebc4bd
                 aBehindArr.push_back(&pRedl->GetBound(true));
ebc4bd
-                aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
ebc4bd
                 bBreak = false;
ebc4bd
             }
ebc4bd
             if( rTbl[ n ]->GetBound(false) == *GetPoint() )
ebc4bd
             {
ebc4bd
                 SwRangeRedline* pRedl = rTbl[n];
ebc4bd
                 aBehindArr.push_back(&pRedl->GetBound(false));
ebc4bd
-                aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
ebc4bd
                 bBreak = false;
ebc4bd
             }
ebc4bd
         }
ebc4bd
@@ -3853,14 +3858,12 @@ void SwRangeRedline::MoveFromSection()
ebc4bd
             {
ebc4bd
                 SwRangeRedline* pRedl = rTbl[n];
ebc4bd
                 aBeforeArr.push_back(&pRedl->GetBound(true));
ebc4bd
-                aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
ebc4bd
                 bBreak = false;
ebc4bd
             }
ebc4bd
             if( rTbl[ n ]->GetBound(false) == *GetPoint() )
ebc4bd
             {
ebc4bd
                 SwRangeRedline* pRedl = rTbl[n];
ebc4bd
                 aBeforeArr.push_back(&pRedl->GetBound(false));
ebc4bd
-                aIndexAndRangeMap.insert(std::make_pair(n, pRedl));
ebc4bd
                 bBreak = false;
ebc4bd
             }
ebc4bd
         }
ebc4bd
@@ -3935,13 +3938,6 @@ void SwRangeRedline::MoveFromSection()
ebc4bd
             *aBeforeArr[ n ] = *Start();
ebc4bd
         for( n = 0; n < aBehindArr.size(); ++n )
ebc4bd
             *aBehindArr[ n ] = *End();
ebc4bd
-        SwRedlineTbl& rResortTbl = const_cast<SwRedlineTbl&>(rTbl);
ebc4bd
-        for (auto& a : aIndexAndRangeMap)
ebc4bd
-        {
ebc4bd
-            // re-insert
ebc4bd
-            rResortTbl.Remove(a.first);
ebc4bd
-            rResortTbl.Insert(a.second);
ebc4bd
-        }
ebc4bd
     }
ebc4bd
     else
ebc4bd
         InvalidateRange();
ebc4bd
diff --git a/sw/source/core/undo/unredln.cxx b/sw/source/core/undo/unredln.cxx
ebc4bd
index 283bf30..48b80c7 100644
ebc4bd
--- a/sw/source/core/undo/unredln.cxx
ebc4bd
+++ b/sw/source/core/undo/unredln.cxx
ebc4bd
@@ -243,7 +243,7 @@ void SwUndoRedlineSort::UndoRedlineImpl(SwDoc & rDoc, SwPaM & rPam)
ebc4bd
         OSL_ENSURE( USHRT_MAX != nFnd && nFnd+1 < (sal_uInt16)rDoc.GetRedlineTbl().size(),
ebc4bd
                     "could not find an Insert object" );
ebc4bd
         ++nFnd;
ebc4bd
-        rDoc.GetRedlineTbl()[nFnd]->Show( 1 );
ebc4bd
+        rDoc.GetRedlineTbl()[nFnd]->Show(1, nFnd);
ebc4bd
     }
ebc4bd
 
ebc4bd
     {
ebc4bd
-- 
ebc4bd
1.9.3
ebc4bd