use more unique_ptr in FormulaTokenArray
Change-Id: Ife00f7e119e4870a3584ae7d766d9debd6220217 Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/632 Tested-by: Jenkins CPCI <releng@collaboraoffice.com> Reviewed-by: Noel Grandin <noel.grandin@collabora.com> (cherry picked from commit b80addae75093d947065f0e41e1a1aebd2c89a03) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208327 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
This commit is contained in:
committed by
Xisco Fauli
parent
33469f27f2
commit
288a6e815d
@@ -361,14 +361,13 @@ void FormulaTokenArray::DelRPN()
|
||||
{
|
||||
if( nRPN )
|
||||
{
|
||||
FormulaToken** p = pRPN;
|
||||
FormulaToken** p = pRPN.get();
|
||||
for( sal_uInt16 i = 0; i < nRPN; i++ )
|
||||
{
|
||||
(*p++)->DecRef();
|
||||
}
|
||||
delete [] pRPN;
|
||||
pRPN.reset();
|
||||
}
|
||||
pRPN = nullptr;
|
||||
nRPN = 0;
|
||||
}
|
||||
|
||||
@@ -469,7 +468,6 @@ bool FormulaTokenArray::HasOpCodes(const unordered_opcode_set& rOpCodes) const
|
||||
}
|
||||
|
||||
FormulaTokenArray::FormulaTokenArray() :
|
||||
pRPN(nullptr),
|
||||
nLen(0),
|
||||
nRPN(0),
|
||||
nError(FormulaError::NONE),
|
||||
@@ -534,8 +532,9 @@ void FormulaTokenArray::Assign( const FormulaTokenArray& r )
|
||||
}
|
||||
if( nRPN )
|
||||
{
|
||||
pp = pRPN = new FormulaToken*[ nRPN ];
|
||||
memcpy( pp, r.pRPN, nRPN * sizeof( FormulaToken* ) );
|
||||
pRPN = std::make_unique<FormulaToken*[]>(nRPN);
|
||||
pp = pRPN.get();
|
||||
memcpy( pp, r.pRPN.get(), nRPN * sizeof( FormulaToken* ) );
|
||||
for( sal_uInt16 i = 0; i < nRPN; i++ )
|
||||
(*pp++)->IncRef();
|
||||
}
|
||||
@@ -544,8 +543,7 @@ void FormulaTokenArray::Assign( const FormulaTokenArray& r )
|
||||
void FormulaTokenArray::Move( FormulaTokenArray&& r )
|
||||
{
|
||||
pCode = std::move(r.pCode);
|
||||
pRPN = r.pRPN;
|
||||
r.pRPN = nullptr;
|
||||
pRPN = std::move(r.pRPN);
|
||||
nLen = r.nLen;
|
||||
r.nLen = 0;
|
||||
nRPN = r.nRPN;
|
||||
@@ -627,7 +625,7 @@ void FormulaTokenArray::CheckAllRPNTokens()
|
||||
{
|
||||
if( nRPN )
|
||||
{
|
||||
FormulaToken** p = pRPN;
|
||||
FormulaToken** p = pRPN.get();
|
||||
for( sal_uInt16 i = 0; i < nRPN; i++ )
|
||||
{
|
||||
CheckToken( *p[ i ] );
|
||||
|
||||
@@ -233,7 +233,7 @@ class FORMULA_DLLPUBLIC FormulaTokenArray
|
||||
{
|
||||
protected:
|
||||
std::unique_ptr<FormulaToken*[]> pCode; // Token code array
|
||||
FormulaToken** pRPN; // RPN array
|
||||
std::unique_ptr<FormulaToken*[]> pRPN; // RPN array
|
||||
sal_uInt16 nLen; // Length of token array
|
||||
sal_uInt16 nRPN; // Length of RPN array
|
||||
FormulaError nError; // Error code
|
||||
@@ -360,9 +360,9 @@ public:
|
||||
/// Assign pRPN to point to a newly created array filled with the data from pData
|
||||
void CreateNewRPNArrayFromData( FormulaToken** pData, sal_uInt16 nSize )
|
||||
{
|
||||
pRPN = new FormulaToken*[ nSize ];
|
||||
pRPN = std::make_unique<FormulaToken*[]>(nSize);
|
||||
nRPN = nSize;
|
||||
memcpy( pRPN, pData, nSize * sizeof( FormulaToken* ) );
|
||||
memcpy( pRPN.get(), pData, nSize * sizeof( FormulaToken* ) );
|
||||
}
|
||||
|
||||
FormulaToken** GetArray() const { return pCode.get(); }
|
||||
@@ -372,11 +372,11 @@ public:
|
||||
return FormulaTokenArrayStandardRange(pCode.get(), nLen);
|
||||
}
|
||||
|
||||
FormulaToken** GetCode() const { return pRPN; }
|
||||
FormulaToken** GetCode() const { return pRPN.get(); }
|
||||
|
||||
FormulaTokenArrayStandardRange RPNTokens() const
|
||||
{
|
||||
return FormulaTokenArrayStandardRange(pRPN, nRPN);
|
||||
return FormulaTokenArrayStandardRange(pRPN.get(), nRPN);
|
||||
}
|
||||
|
||||
FormulaTokenArrayReferencesRange References() const
|
||||
|
||||
@@ -1909,8 +1909,9 @@ std::unique_ptr<ScTokenArray> ScTokenArray::Clone() const
|
||||
}
|
||||
if( nRPN )
|
||||
{
|
||||
pp = p->pRPN = new FormulaToken*[ nRPN ];
|
||||
memcpy( pp, pRPN, nRPN * sizeof( formula::FormulaToken* ) );
|
||||
p->pRPN = std::make_unique<FormulaToken*[]>(nRPN);
|
||||
pp = p->pRPN.get();
|
||||
memcpy( pp, pRPN.get(), nRPN * sizeof( formula::FormulaToken* ) );
|
||||
for( sal_uInt16 i = 0; i < nRPN; i++, pp++ )
|
||||
{
|
||||
FormulaToken* t = *pp;
|
||||
@@ -1968,8 +1969,9 @@ ScTokenArray ScTokenArray::CloneValue() const
|
||||
}
|
||||
if( nRPN )
|
||||
{
|
||||
pp = aNew.pRPN = new FormulaToken*[ nRPN ];
|
||||
memcpy( pp, pRPN, nRPN * sizeof( formula::FormulaToken* ) );
|
||||
aNew.pRPN = std::make_unique<FormulaToken*[]>(nRPN);
|
||||
pp = aNew.pRPN.get();
|
||||
memcpy( pp, pRPN.get(), nRPN * sizeof( formula::FormulaToken* ) );
|
||||
for( sal_uInt16 i = 0; i < nRPN; i++, pp++ )
|
||||
{
|
||||
FormulaToken* t = *pp;
|
||||
@@ -2558,7 +2560,7 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument& rOldDoc, ScDo
|
||||
void ScTokenArray::AdjustAbsoluteRefs( const ScDocument& rOldDoc, const ScAddress& rOldPos, const ScAddress& rNewPos,
|
||||
bool bCheckCopyRange)
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, true);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN, true);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -2622,7 +2624,7 @@ void adjustRelativeTabRef(ScSingleRefData& rRef, SCTAB nOldTab, SCTAB nNewTab, b
|
||||
void ScTokenArray::AdjustRelativeTabRefs(SCTAB nOldTab, SCTAB nNewTab, sc::TargetTabState eMode)
|
||||
{
|
||||
const bool bInsertedTab = (eMode == sc::TargetTabState::Inserted);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, true);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN, true);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -2657,7 +2659,7 @@ void ScTokenArray::AdjustRelativeTabRefs(SCTAB nOldTab, SCTAB nNewTab, sc::Targe
|
||||
|
||||
void ScTokenArray::AdjustSheetLocalNameReferences( SCTAB nOldTab, SCTAB nNewTab )
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN, false);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -2705,7 +2707,7 @@ void ScTokenArray::AdjustSheetLocalNameReferences( SCTAB nOldTab, SCTAB nNewTab
|
||||
|
||||
bool ScTokenArray::ReferencesSheet( SCTAB nTab, SCTAB nPosTab ) const
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN, false);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken* const * pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -3182,7 +3184,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
|
||||
}
|
||||
}
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -3427,7 +3429,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
|
||||
assert(!"can't move");
|
||||
}
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -3576,7 +3578,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
|
||||
void ScTokenArray::MoveReferenceColReorder(
|
||||
const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColRowReorderMapType& rColMap )
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -3645,7 +3647,7 @@ void ScTokenArray::MoveReferenceColReorder(
|
||||
|
||||
void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::ColRowReorderMapType& rRowMap )
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -3872,7 +3874,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
|
||||
// Copying cells does not modify named expressions.
|
||||
return aRes;
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4147,7 +4149,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
|
||||
|
||||
sc::RefUpdateResult aRes;
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4310,7 +4312,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnDeletedTab( const sc::RefUpda
|
||||
ScAddress aNewPos = rOldPos;
|
||||
ScRangeUpdater::UpdateDeleteTab( aNewPos, rCxt);
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4393,7 +4395,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnInsertedTab( const sc::RefUpd
|
||||
if (rCxt.mnInsertPos <= rOldPos.Tab())
|
||||
aNewPos.IncTab(rCxt.mnSheets);
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4487,7 +4489,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMovedTab( const sc::RefUpdate
|
||||
aRes.mnTab = aNewPos.Tab(); // this sets the new tab position used when deleting
|
||||
}
|
||||
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4561,7 +4563,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMovedTab( const sc::RefUpdate
|
||||
|
||||
void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, const ScAddress& rNewPos )
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4611,7 +4613,7 @@ void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, const
|
||||
|
||||
void ScTokenArray::AdjustReferenceOnMovedOriginIfOtherSheet( const ScAddress& rOldPos, const ScAddress& rNewPos )
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4665,7 +4667,7 @@ void ScTokenArray::AdjustReferenceOnMovedOriginIfOtherSheet( const ScAddress& rO
|
||||
|
||||
void ScTokenArray::AdjustReferenceOnCopy( const ScAddress& rNewPos )
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN, false);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4848,7 +4850,7 @@ void checkBounds(
|
||||
void ScTokenArray::CheckRelativeReferenceBounds(
|
||||
const sc::RefUpdateContext& rCxt, const ScAddress& rPos, SCROW nGroupLen, std::vector<SCROW>& rBounds ) const
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4883,7 +4885,7 @@ void ScTokenArray::CheckRelativeReferenceBounds(
|
||||
void ScTokenArray::CheckRelativeReferenceBounds(
|
||||
const ScAddress& rPos, SCROW nGroupLen, const ScRange& rRange, std::vector<SCROW>& rBounds ) const
|
||||
{
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
|
||||
@@ -4920,7 +4922,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.get(), nLen, pRPN, nRPN);
|
||||
TokenPointers aPtrs( pCode.get(), nLen, pRPN.get(), nRPN);
|
||||
for (size_t j=0; j<2; ++j)
|
||||
{
|
||||
FormulaToken* const * pp = aPtrs.maPointerRange[j].mpStart;
|
||||
|
||||
Reference in New Issue
Block a user