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

Reply via email to