summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2024-05-29 18:32:52 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2024-05-30 09:17:37 +0200
commit50a27ef3fb3d7ceab2acacdccd4048cbedb866f1 (patch)
tree799ae71f18593fb348f9f9f75baf5a4e6de5792e /sw/source
parentee4d61b08dabe1c184a49c7301a301ed0dcfc710 (diff)
reduce allocation of SwPaM
Change-Id: I32536dbdb178a5f234cf64a8e7627a569986d942 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168228 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/doc/DocumentContentOperationsManager.cxx11
-rw-r--r--sw/source/core/doc/docsort.cxx10
2 files changed, 10 insertions, 11 deletions
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 0e5e0db06be1..366cd276440b 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -95,6 +95,7 @@
#include <tuple>
#include <memory>
+#include <optional>
using namespace ::com::sun::star::i18n;
@@ -2051,10 +2052,10 @@ bool DocumentContentOperationsManager::CopyRange(SwPaM& rPam, SwPosition& rPos,
}
}
- SwPaM* pRedlineRange = nullptr;
+ std::optional<SwPaM> pRedlineRange;
if( rDoc.getIDocumentRedlineAccess().IsRedlineOn() ||
(!rDoc.getIDocumentRedlineAccess().IsIgnoreRedline() && !rDoc.getIDocumentRedlineAccess().GetRedlineTable().empty() ) )
- pRedlineRange = new SwPaM( rPos );
+ pRedlineRange.emplace( rPos );
RedlineFlags eOld = rDoc.getIDocumentRedlineAccess().GetRedlineFlags();
@@ -2062,7 +2063,7 @@ bool DocumentContentOperationsManager::CopyRange(SwPaM& rPam, SwPosition& rPos,
if( &rDoc != &m_rDoc )
{ // ordinary copy
- bRet = CopyImpl(rPam, rPos, flags & ~SwCopyFlags::CheckPosInFly, pRedlineRange);
+ bRet = CopyImpl(rPam, rPos, flags & ~SwCopyFlags::CheckPosInFly, pRedlineRange ? &*pRedlineRange : nullptr);
}
else if( ! ( *pStt <= rPos && rPos < *pEnd &&
( pStt->GetNode() != pEnd->GetNode() ||
@@ -2070,7 +2071,7 @@ bool DocumentContentOperationsManager::CopyRange(SwPaM& rPam, SwPosition& rPos,
{
// Copy to a position outside of the area, or copy a single TextNode
// Do an ordinary copy
- bRet = CopyImpl(rPam, rPos, flags & ~SwCopyFlags::CheckPosInFly, pRedlineRange);
+ bRet = CopyImpl(rPam, rPos, flags & ~SwCopyFlags::CheckPosInFly, pRedlineRange ? &*pRedlineRange : nullptr);
}
else
{
@@ -2086,7 +2087,7 @@ bool DocumentContentOperationsManager::CopyRange(SwPaM& rPam, SwPosition& rPos,
new SwRangeRedline(RedlineType::Insert, *pRedlineRange, nMovedID), true);
else
rDoc.getIDocumentRedlineAccess().SplitRedline( *pRedlineRange );
- delete pRedlineRange;
+ pRedlineRange.reset();
}
return bRet;
diff --git a/sw/source/core/doc/docsort.cxx b/sw/source/core/doc/docsort.cxx
index 5be48cdedd30..df5aaf6e5c89 100644
--- a/sw/source/core/doc/docsort.cxx
+++ b/sw/source/core/doc/docsort.cxx
@@ -312,14 +312,14 @@ bool SwDoc::SortText(const SwPaM& rPaM, const SwSortOptions& rOpt)
GetIDocumentUndoRedo().StartUndo( SwUndoId::START, nullptr );
}
- SwPaM* pRedlPam = nullptr;
+ std::optional<SwPaM> pRedlPam;
SwUndoRedlineSort* pRedlUndo = nullptr;
SwUndoSort* pUndoSort = nullptr;
// To-Do - add 'SwExtraRedlineTable' also ?
if( getIDocumentRedlineAccess().IsRedlineOn() || (!getIDocumentRedlineAccess().IsIgnoreRedline() && !getIDocumentRedlineAccess().GetRedlineTable().empty() ))
{
- pRedlPam = new SwPaM( pStart->GetNode(), pEnd->GetNode(), SwNodeOffset(-1), SwNodeOffset(1) );
+ pRedlPam.emplace( pStart->GetNode(), pEnd->GetNode(), SwNodeOffset(-1), SwNodeOffset(1) );
SwContentNode* pCNd = pRedlPam->GetMarkContentNode();
if( pCNd )
pRedlPam->GetMark()->SetContent( pCNd->Len() );
@@ -362,8 +362,7 @@ bool SwDoc::SortText(const SwPaM& rPaM, const SwSortOptions& rOpt)
else
{
getIDocumentRedlineAccess().DeleteRedline( *pRedlPam, true, RedlineType::Any );
- delete pRedlPam;
- pRedlPam = nullptr;
+ pRedlPam.reset();
}
}
@@ -447,8 +446,7 @@ bool SwDoc::SortText(const SwPaM& rPaM, const SwSortOptions& rOpt)
pRedlUndo->SetValues( *pRedlPam );
}
- delete pRedlPam;
- pRedlPam = nullptr;
+ pRedlPam.reset();
}
GetIDocumentUndoRedo().DoUndo( bUndo );
if( bUndo )