formula/source/core/api/token.cxx |   15 +++++-----
 include/formula/tokenarray.hxx    |    6 ++--
 sc/source/core/tool/token.cxx     |   55 +++++++++++++++++++-------------------
 3 files changed, 39 insertions(+), 37 deletions(-)

New commits:
commit 7ebb57228f27a95eb1648500b5becb3febb9d316
Author: Noel Grandin <noel.gran...@collabora.co.uk>
Date:   Tue May 8 10:33:15 2018 +0200

    loplugin:useuniqueptr in FormulaTokenArray
    
    Change-Id: I5716295d2f0c88c6daf0570941d5dd4c5ff03a33
    Reviewed-on: https://gerrit.libreoffice.org/54168
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/formula/source/core/api/token.cxx 
b/formula/source/core/api/token.cxx
index 1d33b4d93571..649a8d36c443 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -605,8 +605,9 @@ void FormulaTokenArray::Assign( const FormulaTokenArray& r )
     FormulaToken** pp;
     if( nLen )
     {
-        pp = pCode = new FormulaToken*[ nLen ];
-        memcpy( pp, r.pCode, nLen * sizeof( FormulaToken* ) );
+        pCode.reset(new FormulaToken*[ nLen ]);
+        pp = pCode.get();
+        memcpy( pp, r.pCode.get(), nLen * sizeof( FormulaToken* ) );
         for( sal_uInt16 i = 0; i < nLen; i++ )
             (*pp++)->IncRef();
         mbFinalized = true;
@@ -627,7 +628,7 @@ void FormulaTokenArray::Assign( sal_uInt16 nCode, 
FormulaToken **pTokens )
     assert( pCode == nullptr );
 
     nLen = nCode;
-    pCode = new FormulaToken*[ nLen ];
+    pCode.reset(new FormulaToken*[ nLen ]);
     mbFinalized = true;
 
     for( sal_uInt16 i = 0; i < nLen; i++ )
@@ -651,14 +652,14 @@ void FormulaTokenArray::Clear()
     if( nRPN ) DelRPN();
     if( pCode )
     {
-        FormulaToken** p = pCode;
+        FormulaToken** p = pCode.get();
         for( sal_uInt16 i = 0; i < nLen; i++ )
         {
             (*p++)->DecRef();
         }
-        delete [] pCode;
+        pCode.reset();
     }
-    pCode = nullptr; pRPN = nullptr;
+    pRPN = nullptr;
     nError = FormulaError::NONE;
     nLen = nRPN = 0;
     bHyperLink = false;
@@ -775,7 +776,7 @@ FormulaToken* FormulaTokenArray::Add( FormulaToken* t )
     }
 
     if( !pCode )
-        pCode = new FormulaToken*[ FORMULA_MAXTOKENS ];
+        pCode.reset(new FormulaToken*[ FORMULA_MAXTOKENS ]);
     if( nLen < FORMULA_MAXTOKENS - 1 )
     {
         CheckToken(*t);
diff --git a/include/formula/tokenarray.hxx b/include/formula/tokenarray.hxx
index 087f7eacb83f..c0376812a9fb 100644
--- a/include/formula/tokenarray.hxx
+++ b/include/formula/tokenarray.hxx
@@ -230,7 +230,7 @@ public:
 class FORMULA_DLLPUBLIC FormulaTokenArray
 {
 protected:
-    FormulaToken**  pCode;                  // Token code array
+    std::unique_ptr<FormulaToken*[]> pCode; // Token code array
     FormulaToken**  pRPN;                   // RPN array
     sal_uInt16      nLen;                   // Length of token array
     sal_uInt16      nRPN;                   // Length of RPN array
@@ -363,11 +363,11 @@ public:
         memcpy( pRPN, pData, nSize * sizeof( FormulaToken* ) );
     }
 
-    FormulaToken** GetArray() const  { return pCode; }
+    FormulaToken** GetArray() const  { return pCode.get(); }
 
     FormulaTokenArrayStandardRange Tokens() const
     {
-        return FormulaTokenArrayStandardRange(pCode, nLen);
+        return FormulaTokenArrayStandardRange(pCode.get(), nLen);
     }
 
     FormulaToken** GetCode()  const  { return pRPN; }
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 6548a82830d7..36b5e9f8e6e9 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1839,7 +1839,7 @@ bool ScTokenArray::IsFormulaVectorDisabled() const
 
 bool ScTokenArray::IsInvariant() const
 {
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -1949,8 +1949,9 @@ ScTokenArray* ScTokenArray::Clone() const
     FormulaToken** pp;
     if( nLen )
     {
-        pp = p->pCode = new FormulaToken*[ nLen ];
-        memcpy( pp, pCode, nLen * sizeof( formula::FormulaToken* ) );
+        p->pCode.reset(new FormulaToken*[ nLen ]);
+        pp = p->pCode.get();
+        memcpy( pp, pCode.get(), nLen * sizeof( formula::FormulaToken* ) );
         for( sal_uInt16 i = 0; i < nLen; i++, pp++ )
         {
             *pp = (*pp)->Clone();
@@ -1966,7 +1967,7 @@ ScTokenArray* ScTokenArray::Clone() const
             FormulaToken* t = *pp;
             if( t->GetRef() > 1 )
             {
-                FormulaToken** p2 = pCode;
+                FormulaToken** p2 = pCode.get();
                 sal_uInt16 nIdx = 0xFFFF;
                 for( sal_uInt16 j = 0; j < nLen; j++, p2++ )
                 {
@@ -2536,7 +2537,7 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const 
ScDocument* pOldDoc, ScDo
 void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const 
ScAddress& rOldPos, const ScAddress& rNewPos,
         bool bCheckCopyRange)
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, true);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, true);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -2583,7 +2584,7 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* 
pOldDoc, const ScAddres
 
 void ScTokenArray::AdjustSheetLocalNameReferences( SCTAB nOldTab, SCTAB 
nNewTab )
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, false);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -2631,7 +2632,7 @@ void ScTokenArray::AdjustSheetLocalNameReferences( SCTAB 
nOldTab, SCTAB nNewTab
 
 bool ScTokenArray::ReferencesSheet( SCTAB nTab, SCTAB nPosTab ) const
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, false);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken* const * pp = aPtrs.maPointerRange[j].mpStart;
@@ -3082,7 +3083,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( 
const sc::RefUpdateCon
         }
     }
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -3314,7 +3315,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
         assert(!"can't move");
     }
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -3437,7 +3438,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const 
ScAddress& rPos, const sc
         assert(!"can't move");
     }
 
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -3513,7 +3514,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const 
ScAddress& rPos, const sc
 void ScTokenArray::MoveReferenceColReorder(
     const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const 
sc::ColRowReorderMapType& rColMap )
 {
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -3576,7 +3577,7 @@ void ScTokenArray::MoveReferenceColReorder(
 
 void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, 
SCCOL nCol1, SCCOL nCol2, const sc::ColRowReorderMapType& rRowMap )
 {
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -3796,7 +3797,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
         // Copying cells does not modify named expressions.
         return aRes;
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4074,7 +4075,7 @@ sc::RefUpdateResult 
ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
 
     sc::RefUpdateResult aRes;
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4226,7 +4227,7 @@ sc::RefUpdateResult 
ScTokenArray::AdjustReferenceOnDeletedTab( const sc::RefUpda
     if (rCxt.mnDeletePos < rOldPos.Tab())
         aNewPos.IncTab(-1*rCxt.mnSheets);
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4299,7 +4300,7 @@ sc::RefUpdateResult 
ScTokenArray::AdjustReferenceOnInsertedTab( const sc::RefUpd
     if (rCxt.mnInsertPos <= rOldPos.Tab())
         aNewPos.IncTab(rCxt.mnSheets);
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4388,7 +4389,7 @@ sc::RefUpdateResult 
ScTokenArray::AdjustReferenceOnMovedTab( const sc::RefUpdate
     if (adjustTabOnMove(aNewPos, rCxt))
         aRes.mbReferenceModified = true;
 
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4461,7 +4462,7 @@ sc::RefUpdateResult 
ScTokenArray::AdjustReferenceOnMovedTab( const sc::RefUpdate
 
 void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, 
const ScAddress& rNewPos )
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4499,7 +4500,7 @@ void ScTokenArray::AdjustReferenceOnMovedOrigin( const 
ScAddress& rOldPos, const
 
 void ScTokenArray::AdjustReferenceOnMovedOriginIfOtherSheet( const ScAddress& 
rOldPos, const ScAddress& rNewPos )
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4548,7 +4549,7 @@ void 
ScTokenArray::AdjustReferenceOnMovedOriginIfOtherSheet( const ScAddress& rO
 
 void ScTokenArray::AdjustReferenceOnCopy( const ScAddress& rNewPos )
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, false);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4593,7 +4594,7 @@ void ScTokenArray::ClearTabDeleted( const ScAddress& 
rPos, SCTAB nStartTab, SCTA
     if (nEndTab < nStartTab)
         return;
 
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -4729,7 +4730,7 @@ void checkBounds(
 void ScTokenArray::CheckRelativeReferenceBounds(
     const sc::RefUpdateContext& rCxt, const ScAddress& rPos, SCROW nGroupLen, 
std::vector<SCROW>& rBounds ) const
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4764,7 +4765,7 @@ void ScTokenArray::CheckRelativeReferenceBounds(
 void ScTokenArray::CheckRelativeReferenceBounds(
     const ScAddress& rPos, SCROW nGroupLen, const ScRange& rRange, 
std::vector<SCROW>& rBounds ) const
 {
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4801,7 +4802,7 @@ void ScTokenArray::CheckExpandReferenceBounds(
     const sc::RefUpdateContext& rCxt, const ScAddress& rPos, SCROW nGroupLen, 
std::vector<SCROW>& rBounds ) const
 {
     const SCROW nInsRow = rCxt.maRange.aStart.Row();
-    TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+    TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
     for (size_t j=0; j<2; ++j)
     {
         FormulaToken* const * pp = aPtrs.maPointerRange[j].mpStart;
@@ -5208,7 +5209,7 @@ OUString ScTokenArray::CreateString( 
sc::TokenStringContext& rCxt, const ScAddre
 
     OUStringBuffer aBuf;
 
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -5275,7 +5276,7 @@ void wrapRowRange( ScRange& rRange, SCROW nMaxRow )
 
 void ScTokenArray::WrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW 
nMaxRow )
 {
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
@@ -5318,7 +5319,7 @@ void ScTokenArray::WrapReference( const ScAddress& rPos, 
SCCOL nMaxCol, SCROW nM
 
 bool ScTokenArray::NeedsWrapReference( const ScAddress& rPos, SCCOL nMaxCol, 
SCROW nMaxRow ) const
 {
-    FormulaToken** p = pCode;
+    FormulaToken** p = pCode.get();
     FormulaToken** pEnd = p + static_cast<size_t>(nLen);
     for (; p != pEnd; ++p)
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to