Kaydet (Commit) 6139bca6 authored tarafından Jochen Nitschke's avatar Jochen Nitschke Kaydeden (comit) Noel Grandin

don't emit objects on ScRange*List::Remove

Change-Id: I6be23f6659079f5c60be9574c717fd4f7de23bc4
Reviewed-on: https://gerrit.libreoffice.org/32754Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
Tested-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 0e911397
...@@ -75,7 +75,7 @@ public: ...@@ -75,7 +75,7 @@ public:
ScRangeList GetIntersectedRange(const ScRange& rRange) const; ScRangeList GetIntersectedRange(const ScRange& rRange) const;
ScRange* Remove(size_t nPos); void Remove(size_t nPos);
void RemoveAll(); void RemoveAll();
ScRange Combine() const; ScRange Combine() const;
...@@ -123,7 +123,7 @@ public: ...@@ -123,7 +123,7 @@ public:
ScRangePair** CreateNameSortedArray( size_t& nCount, ScDocument* ) const; ScRangePair** CreateNameSortedArray( size_t& nCount, ScDocument* ) const;
void Remove(size_t nPos); void Remove(size_t nPos);
ScRangePair* Remove(ScRangePair* pAdr); void Remove(ScRangePair* pAdr);
size_t size() const; size_t size() const;
ScRangePair* operator[](size_t idx); ScRangePair* operator[](size_t idx);
......
...@@ -330,7 +330,6 @@ void ScRangeList::Join( const ScRange& r, bool bIsInList ) ...@@ -330,7 +330,6 @@ void ScRangeList::Join( const ScRange& r, bool bIsInList )
{ // innerhalb der Liste Range loeschen { // innerhalb der Liste Range loeschen
Remove(nOldPos); Remove(nOldPos);
i--; i--;
delete pOver;
pOver = nullptr; pOver = nullptr;
if ( nOldPos ) if ( nOldPos )
nOldPos--; // Seek richtig aufsetzen nOldPos--; // Seek richtig aufsetzen
...@@ -948,8 +947,7 @@ bool ScRangeList::DeleteArea( SCCOL nCol1, SCROW nRow1, SCTAB nTab1, ...@@ -948,8 +947,7 @@ bool ScRangeList::DeleteArea( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
{ {
if(FindRangeIn< ScRange >(aRange)(maRanges[i])) if(FindRangeIn< ScRange >(aRange)(maRanges[i]))
{ {
ScRange* pRange = Remove(i); Remove(i);
delete pRange;
bChanged = true; bChanged = true;
} }
else else
...@@ -1079,17 +1077,16 @@ size_t ScRangeList::GetCellCount() const ...@@ -1079,17 +1077,16 @@ size_t ScRangeList::GetCellCount() const
return for_each(maRanges.begin(), maRanges.end(), func).getCellCount(); return for_each(maRanges.begin(), maRanges.end(), func).getCellCount();
} }
ScRange* ScRangeList::Remove(size_t nPos) void ScRangeList::Remove(size_t nPos)
{ {
if (maRanges.size() <= nPos) if (maRanges.size() <= nPos)
// Out-of-bound condition. Bail out. // Out-of-bound condition. Bail out.
return nullptr; return;
iterator itr = maRanges.begin(); iterator itr = maRanges.begin();
advance(itr, nPos); advance(itr, nPos);
ScRange* p = *itr; delete *itr;
maRanges.erase(itr); maRanges.erase(itr);
return p;
} }
void ScRangeList::RemoveAll() void ScRangeList::RemoveAll()
...@@ -1237,24 +1234,25 @@ void ScRangePairList::Remove(size_t nPos) ...@@ -1237,24 +1234,25 @@ void ScRangePairList::Remove(size_t nPos)
vector<ScRangePair*>::iterator itr = maPairs.begin(); vector<ScRangePair*>::iterator itr = maPairs.begin();
advance(itr, nPos); advance(itr, nPos);
delete *itr;
maPairs.erase(itr); maPairs.erase(itr);
} }
ScRangePair* ScRangePairList::Remove( ScRangePair* Adr) void ScRangePairList::Remove( ScRangePair* Adr)
{ {
ScRangePair* p = nullptr; if (Adr == nullptr)
return;
if (Adr == nullptr) return nullptr;
for ( vector<ScRangePair*>::iterator itr = maPairs.begin(); itr < maPairs.end(); ++itr ) for ( vector<ScRangePair*>::iterator itr = maPairs.begin(); itr != maPairs.end(); ++itr )
{ {
if ( Adr == (p = *itr) ) if (Adr == *itr)
{ {
delete *itr;
maPairs.erase( itr ); maPairs.erase( itr );
break; return;
} }
} }
return p; assert(false);
} }
ScRangePair* ScRangePairList::operator [](size_t idx) ScRangePair* ScRangePairList::operator [](size_t idx)
...@@ -1323,7 +1321,6 @@ void ScRangePairList::DeleteOnTab( SCTAB nTab ) ...@@ -1323,7 +1321,6 @@ void ScRangePairList::DeleteOnTab( SCTAB nTab )
if ( aRange.aStart.Tab() == nTab && aRange.aEnd.Tab() == nTab ) if ( aRange.aStart.Tab() == nTab && aRange.aEnd.Tab() == nTab )
{ {
Remove( nPos ); Remove( nPos );
delete pR;
nListCount = maPairs.size(); nListCount = maPairs.size();
} }
else else
...@@ -1544,7 +1541,6 @@ void ScRangePairList::Join( const ScRangePair& r, bool bIsInList ) ...@@ -1544,7 +1541,6 @@ void ScRangePairList::Join( const ScRangePair& r, bool bIsInList )
{ // innerhalb der Liste RangePair loeschen { // innerhalb der Liste RangePair loeschen
Remove( nOldPos ); Remove( nOldPos );
i--; i--;
delete pOver;
pOver = nullptr; pOver = nullptr;
if ( nOldPos ) if ( nOldPos )
nOldPos--; // Seek richtig aufsetzen nOldPos--; // Seek richtig aufsetzen
......
...@@ -252,7 +252,7 @@ void XclExpAddressConverter::ValidateRangeList( ScRangeList& rScRanges, bool bWa ...@@ -252,7 +252,7 @@ void XclExpAddressConverter::ValidateRangeList( ScRangeList& rScRanges, bool bWa
{ {
ScRange* pScRange = rScRanges[ --nRange ]; ScRange* pScRange = rScRanges[ --nRange ];
if( !CheckRange( *pScRange, bWarn ) ) if( !CheckRange( *pScRange, bWarn ) )
delete rScRanges.Remove(nRange); rScRanges.Remove(nRange);
} }
} }
......
...@@ -539,12 +539,10 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, AddBtnHdl, Button*, void) ...@@ -539,12 +539,10 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, AddBtnHdl, Button*, void)
if ( ( pPair = xColNameRanges->Find( theCurArea ) ) != nullptr ) if ( ( pPair = xColNameRanges->Find( theCurArea ) ) != nullptr )
{ {
xColNameRanges->Remove( pPair ); xColNameRanges->Remove( pPair );
delete pPair;
} }
if ( ( pPair = xRowNameRanges->Find( theCurArea ) ) != nullptr ) if ( ( pPair = xRowNameRanges->Find( theCurArea ) ) != nullptr )
{ {
xRowNameRanges->Remove( pPair ); xRowNameRanges->Remove( pPair );
delete pPair;
} }
if ( pBtnColHead->IsChecked() ) if ( pBtnColHead->IsChecked() )
xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) ); xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
...@@ -605,7 +603,6 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, RemoveBtnHdl, Button*, void) ...@@ -605,7 +603,6 @@ IMPL_LINK_NOARG(ScColRowNameRangesDlg, RemoveBtnHdl, Button*, void)
xColNameRanges->Remove( pPair ); xColNameRanges->Remove( pPair );
else else
xRowNameRanges->Remove( pPair ); xRowNameRanges->Remove( pPair );
delete pPair;
UpdateNames(); UpdateNames();
const sal_Int32 nCnt = pLbRange->GetEntryCount(); const sal_Int32 nCnt = pLbRange->GetEntryCount();
......
...@@ -975,15 +975,12 @@ void ScLabelRangeObj::Modify_Impl( const ScRange* pLabel, const ScRange* pData ) ...@@ -975,15 +975,12 @@ void ScLabelRangeObj::Modify_Impl( const ScRange* pLabel, const ScRange* pData )
ScRangePair* pEntry = xNewList->Find( aRange ); ScRangePair* pEntry = xNewList->Find( aRange );
if (pEntry) if (pEntry)
{ {
xNewList->Remove( pEntry ); // only removed from list, not deleted
if ( pLabel ) if ( pLabel )
pEntry->GetRange(0) = *pLabel; pEntry->GetRange(0) = *pLabel;
if ( pData ) if ( pData )
pEntry->GetRange(1) = *pData; pEntry->GetRange(1) = *pData;
xNewList->Join( *pEntry ); xNewList->Join( *pEntry, true );
delete pEntry;
if (bColumn) if (bColumn)
rDoc.GetColNameRangesRef() = xNewList; rDoc.GetColNameRangesRef() = xNewList;
...@@ -1139,7 +1136,6 @@ void SAL_CALL ScLabelRangesObj::removeByIndex( sal_Int32 nIndex ) ...@@ -1139,7 +1136,6 @@ void SAL_CALL ScLabelRangesObj::removeByIndex( sal_Int32 nIndex )
if (pEntry) if (pEntry)
{ {
xNewList->Remove( pEntry ); xNewList->Remove( pEntry );
delete pEntry;
if (bColumn) if (bColumn)
rDoc.GetColNameRangesRef() = xNewList; rDoc.GetColNameRangesRef() = xNewList;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment