sw/inc/docary.hxx | 8 +++++--- sw/source/core/doc/DocumentRedlineManager.cxx | 9 ++++++--- sw/source/core/doc/docredln.cxx | 6 +++--- 3 files changed, 14 insertions(+), 9 deletions(-)
New commits: commit 58d57d666a7ea2044599d9ec47a29ff3c6b588a2 Author: Caolán McNamara <caol...@redhat.com> Date: Thu May 18 13:52:04 2017 +0100 ofz: InsertWithValidRanges didn't report that it deleted its argument anymore since... commit ddd84d08c9bb6e00fbd9a73bd52a28688a8c1ba7 Date: Fri Jul 20 17:16:03 2012 +0200 Convert SV_DECL_PTRARR_SORT_DEL(_SwRedlineTbl) to o3tl::sorted_vector Change-Id: Ie7edc6b32b373619d4c0ac154da93650743049cf otherwise that p = nullptr line at the end doesn't make sense Change-Id: Ibd5230beb87240cba4b3896dfa2217e25a4db697 Reviewed-on: https://gerrit.libreoffice.org/37760 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx index de663f105075..424680b329c6 100644 --- a/sw/inc/docary.hxx +++ b/sw/inc/docary.hxx @@ -318,6 +318,8 @@ struct CompareSwRedlineTable // Notification type for notifying about redlines to LOK clients enum class RedlineNotification { Add, Remove, Modify }; +typedef SwRangeRedline* SwRangeRedlinePtr; + class SwRedlineTable { public: @@ -333,9 +335,9 @@ public: bool Contains(const SwRangeRedline* p) const { return maVector.find(const_cast<SwRangeRedline* const>(p)) != maVector.end(); } size_type GetPos(const SwRangeRedline* p) const; - bool Insert( SwRangeRedline* p ); - bool Insert( SwRangeRedline* p, size_type& rInsPos ); - bool InsertWithValidRanges( SwRangeRedline* p, size_type* pInsPos = nullptr ); + bool Insert(SwRangeRedlinePtr& p); + bool Insert(SwRangeRedlinePtr& p, size_type& rInsPos); + bool InsertWithValidRanges(SwRangeRedlinePtr& p, size_type* pInsPos = nullptr); void Remove( size_type nPos ); bool Remove( const SwRangeRedline* p ); diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index 093bdc719228..90cc40202ab8 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -1228,9 +1228,10 @@ bool DocumentRedlineManager::AppendRedline( SwRangeRedline* pNewRedl, bool bCall if( bCallDelete ) { ::comphelper::FlagGuard g(m_isForbidCompressRedlines); + //Insert may delete pNewRedl, in which case it sets pNewRedl to nullptr mpRedlineTable->Insert( pNewRedl ); m_rDoc.getIDocumentContentOperations().DeleteAndJoin( *pRedl ); - if( !mpRedlineTable->Remove( pNewRedl ) ) + if (pNewRedl && !mpRedlineTable->Remove(pNewRedl)) { assert(false); // can't happen pNewRedl = nullptr; @@ -1260,9 +1261,10 @@ bool DocumentRedlineManager::AppendRedline( SwRangeRedline* pNewRedl, bool bCall // We insert temporarily so that pNew is // also dealt with when moving the indices. ::comphelper::FlagGuard g(m_isForbidCompressRedlines); + //Insert may delete pNewRedl, in which case it sets pNewRedl to nullptr mpRedlineTable->Insert( pNewRedl ); m_rDoc.getIDocumentContentOperations().DeleteAndJoin( aPam ); - if( !mpRedlineTable->Remove( pNewRedl ) ) + if (pNewRedl && !mpRedlineTable->Remove(pNewRedl)) { assert(false); // can't happen pNewRedl = nullptr; @@ -1291,9 +1293,10 @@ bool DocumentRedlineManager::AppendRedline( SwRangeRedline* pNewRedl, bool bCall // We insert temporarily so that pNew is // also dealt with when moving the indices. ::comphelper::FlagGuard g(m_isForbidCompressRedlines); + //Insert may delete pNewRedl, in which case it sets pNewRedl to nullptr mpRedlineTable->Insert( pNewRedl ); m_rDoc.getIDocumentContentOperations().DeleteAndJoin( aPam ); - if( !mpRedlineTable->Remove( pNewRedl ) ) + if (pNewRedl && !mpRedlineTable->Remove(pNewRedl)) { assert(false); // can't happen pNewRedl = nullptr; diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx index 2a2272dc1fcf..709041ae486b 100644 --- a/sw/source/core/doc/docredln.cxx +++ b/sw/source/core/doc/docredln.cxx @@ -409,7 +409,7 @@ void SwRedlineTable::LOKRedlineNotification(RedlineNotification nType, SwRangeRe } } -bool SwRedlineTable::Insert( SwRangeRedline* p ) +bool SwRedlineTable::Insert(SwRangeRedlinePtr& p) { if( p->HasValidRange() ) { @@ -422,7 +422,7 @@ bool SwRedlineTable::Insert( SwRangeRedline* p ) return InsertWithValidRanges( p ); } -bool SwRedlineTable::Insert( SwRangeRedline* p, size_type& rP ) +bool SwRedlineTable::Insert(SwRangeRedlinePtr& p, size_type& rP) { if( p->HasValidRange() ) { @@ -434,7 +434,7 @@ bool SwRedlineTable::Insert( SwRangeRedline* p, size_type& rP ) return InsertWithValidRanges( p, &rP ); } -bool SwRedlineTable::InsertWithValidRanges( SwRangeRedline* p, size_type* pInsPos ) +bool SwRedlineTable::InsertWithValidRanges(SwRangeRedlinePtr& p, size_type* pInsPos) { // Create valid "sub-ranges" from the Selection bool bAnyIns = false;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits