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