sw/inc/ndarr.hxx | 4 +++- sw/source/core/docnode/ndtbl.cxx | 6 ++---- sw/source/core/unocore/unotext.cxx | 14 +++++++------- 3 files changed, 12 insertions(+), 12 deletions(-)
New commits: commit 36333de160c88a3190d799c031b16e1ef6bcaa86 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sat Aug 6 09:37:00 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Aug 6 12:04:43 2022 +0200 no need to allocate on heap here Change-Id: I889690c136f200cffd0398254ec9935e2027a32c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137893 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx index 683cfde170bf..1b1227549583 100644 --- a/sw/inc/ndarr.hxx +++ b/sw/inc/ndarr.hxx @@ -25,6 +25,7 @@ #include <limits> #include <vector> #include <memory> +#include <optional> #include "bparr.hxx" #include "ndtyp.hxx" @@ -260,7 +261,8 @@ public: SwTextFormatColl* pTextColl, SwUndoTextToTable* pUndo ); - std::unique_ptr<SwNodeRange> ExpandRangeForTableBox(const SwNodeRange & rRange); + void ExpandRangeForTableBox(const SwNodeRange & rRange, + std::optional<SwNodeRange>& rExpandedRange); /// create a table from a vector of NodeRanges - API support SwTableNode* TextToTable( const TableRanges_t& rTableNodes, diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index 9f4ff4cacade..9f8ab820b4a0 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -1273,7 +1273,7 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > return &rNdTable; } -std::unique_ptr<SwNodeRange> SwNodes::ExpandRangeForTableBox(const SwNodeRange & rRange) +void SwNodes::ExpandRangeForTableBox(const SwNodeRange & rRange, std::optional<SwNodeRange>& rExpandedRange) { bool bChanged = false; @@ -1328,10 +1328,8 @@ std::unique_ptr<SwNodeRange> SwNodes::ExpandRangeForTableBox(const SwNodeRange & pNode = &aIndex.GetNode(); } - std::unique_ptr<SwNodeRange> pResult; if (bChanged) - pResult.reset(new SwNodeRange(aNewStart, aNewEnd)); - return pResult; + rExpandedRange.emplace(aNewStart, aNewEnd); } static void diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx index d5e2cac57e35..c2440ffb1a8b 100644 --- a/sw/source/core/unocore/unotext.cxx +++ b/sw/source/core/unocore/unotext.cxx @@ -1925,23 +1925,23 @@ void SwXText::Impl::ConvertCell( SwNodeRange aTmpRange(aStartCellPam.Start()->nNode, aEndCellPam.End()->nNode); - std::unique_ptr<SwNodeRange> pCorrectedRange = - m_pDoc->GetNodes().ExpandRangeForTableBox(aTmpRange); + std::optional<SwNodeRange> oCorrectedRange; + m_pDoc->GetNodes().ExpandRangeForTableBox(aTmpRange, oCorrectedRange); - if (pCorrectedRange) + if (oCorrectedRange) { - SwPaM aNewStartPaM(pCorrectedRange->aStart, 0); + SwPaM aNewStartPaM(oCorrectedRange->aStart, 0); aStartCellPam = aNewStartPaM; sal_Int32 nEndLen = 0; - SwTextNode * pTextNode = pCorrectedRange->aEnd.GetNode().GetTextNode(); + SwTextNode * pTextNode = oCorrectedRange->aEnd.GetNode().GetTextNode(); if (pTextNode != nullptr) nEndLen = pTextNode->Len(); - SwPaM aNewEndPaM(pCorrectedRange->aEnd, nEndLen); + SwPaM aNewEndPaM(oCorrectedRange->aEnd, nEndLen); aEndCellPam = aNewEndPaM; - pCorrectedRange.reset(); + oCorrectedRange.reset(); } /** check the nodes between start and end