summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-08-24 13:55:32 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-08-24 15:57:08 +0200
commit588333c9438bfd97c027c2cd0d4936f5b4cbf25a (patch)
treeaa7424402a1e5ab36dcf28ada26faa531cc3e800 /sc
parentb5ee452d403b0c94cc0d7548117e9c96d1d45c67 (diff)
loplugin:useuniqueptr for ScOutlineTable in the undo code
fixing what looks like a couple of leaks on some paths Change-Id: Idc851b8ffca8e5ed1bd54c9195442709ed310d40 Reviewed-on: https://gerrit.libreoffice.org/59558 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/docshell/dbdocfun.cxx6
-rw-r--r--sc/source/ui/docshell/docfunc.cxx8
-rw-r--r--sc/source/ui/docshell/olinefun.cxx37
-rw-r--r--sc/source/ui/inc/undoblk.hxx2
-rw-r--r--sc/source/ui/inc/undodat.hxx12
-rw-r--r--sc/source/ui/undo/undoblk2.cxx4
-rw-r--r--sc/source/ui/undo/undodat.cxx24
-rw-r--r--sc/source/ui/view/dbfunc3.cxx6
-rw-r--r--sc/source/ui/view/viewfunc.cxx8
9 files changed, 52 insertions, 55 deletions
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 83eb6215ac77..1157972ee407 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -1028,7 +1028,7 @@ void ScDBDocFunc::DoSubTotals( SCTAB nTab, const ScSubTotalParam& rParam,
ScSubTotalParam aNewParam( rParam ); // end of range is being changed
ScDocument* pUndoDoc = nullptr;
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
ScRangeName* pUndoRange = nullptr;
ScDBCollection* pUndoDB = nullptr;
@@ -1041,7 +1041,7 @@ void ScDBDocFunc::DoSubTotals( SCTAB nTab, const ScSubTotalParam& rParam,
ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
if (pTable)
{
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
// column/row state
SCCOLROW nOutStartCol, nOutEndCol;
@@ -1110,7 +1110,7 @@ void ScDBDocFunc::DoSubTotals( SCTAB nTab, const ScSubTotalParam& rParam,
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoSubTotals( &rDocShell, nTab,
rParam, aNewParam.nRow2,
- pUndoDoc, pUndoTab, // pUndoDBData,
+ pUndoDoc, std::move(pUndoTab), // pUndoDBData,
pUndoRange, pUndoDB ) );
}
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index ca4089b8a448..db989b28a661 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -3533,7 +3533,7 @@ bool ScDocFunc::SetWidthOrHeight(
}
ScDocument* pUndoDoc = nullptr;
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
std::vector<sc::ColRowSpan> aUndoRanges;
if ( bRecord )
@@ -3556,7 +3556,7 @@ bool ScDocFunc::SetWidthOrHeight(
ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
if (pTable)
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
}
bool bShow = nSizeTwips > 0 || eMode != SC_SIZE_DIRECT;
@@ -3650,7 +3650,7 @@ bool ScDocFunc::SetWidthOrHeight(
rDoc.SetDrawPageSize(nTab);
if (!bOutline)
- DELETEZ(pUndoTab);
+ pUndoTab.reset();
if (bRecord)
{
@@ -3659,7 +3659,7 @@ bool ScDocFunc::SetWidthOrHeight(
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoWidthOrHeight(
&rDocShell, aMark, nStart, nTab, nEnd, nTab, pUndoDoc,
- aUndoRanges, pUndoTab, eMode, nSizeTwips, bWidth));
+ aUndoRanges, std::move(pUndoTab), eMode, nSizeTwips, bWidth));
}
rDoc.UpdatePageBreaks( nTab );
diff --git a/sc/source/ui/docshell/olinefun.cxx b/sc/source/ui/docshell/olinefun.cxx
index 4060625466fa..d22d5e3a11d8 100644
--- a/sc/source/ui/docshell/olinefun.cxx
+++ b/sc/source/ui/docshell/olinefun.cxx
@@ -89,13 +89,13 @@ void ScOutlineDocFunc::MakeOutline( const ScRange& rRange, bool bColumns, bool b
ScDocument& rDoc = rDocShell.GetDocument();
ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab, true );
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
if (bRecord && !rDoc.IsUndoEnabled())
bRecord = false;
if (bRecord)
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
ScOutlineArray& rArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
@@ -113,7 +113,7 @@ void ScOutlineDocFunc::MakeOutline( const ScRange& rRange, bool bColumns, bool b
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoMakeOutline( &rDocShell,
nStartCol,nStartRow,nTab,nEndCol,nEndRow,nTab,
- pUndoTab, bColumns, true ) );
+ std::move(pUndoTab), bColumns, true ) );
}
rDoc.SetStreamValid(nTab, false);
@@ -134,7 +134,6 @@ void ScOutlineDocFunc::MakeOutline( const ScRange& rRange, bool bColumns, bool b
{
if (!bApi)
rDocShell.ErrorMessage(STR_MSSG_MAKEOUTLINE_0); // "Grouping not possible"
- delete pUndoTab;
}
}
@@ -155,9 +154,9 @@ void ScOutlineDocFunc::RemoveOutline( const ScRange& rRange, bool bColumns, bool
ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
if (pTable)
{
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
if (bRecord)
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
ScOutlineArray& rArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
@@ -175,7 +174,7 @@ void ScOutlineDocFunc::RemoveOutline( const ScRange& rRange, bool bColumns, bool
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoMakeOutline( &rDocShell,
nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab,
- pUndoTab, bColumns, false ) );
+ std::move(pUndoTab), bColumns, false ) );
}
rDoc.SetStreamValid(nTab, false);
@@ -195,8 +194,6 @@ void ScOutlineDocFunc::RemoveOutline( const ScRange& rRange, bool bColumns, bool
// we are not enabling again -> no UpdatePageBreaks
}
- else
- delete pUndoTab;
}
if (!bDone && !bApi)
@@ -228,13 +225,13 @@ bool ScOutlineDocFunc::RemoveAllOutlines( SCTAB nTab, bool bRecord )
rDoc.CopyToDocument(nStartCol, 0, nTab, nEndCol, MAXROW, nTab, InsertDeleteFlags::NONE, false, *pUndoDoc);
rDoc.CopyToDocument(0, nStartRow, nTab, MAXCOL, nEndRow, nTab, InsertDeleteFlags::NONE, false, *pUndoDoc);
- ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ std::unique_ptr<ScOutlineTable> pUndoTab(new ScOutlineTable( *pTable ));
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoRemoveAllOutlines( &rDocShell,
nStartCol, nStartRow, nTab,
nEndCol, nEndRow, nTab,
- pUndoDoc, pUndoTab ) );
+ pUndoDoc, std::move(pUndoTab) ) );
}
SelectLevel( nTab, true, pTable->GetColArray().GetDepth(), false, false );
@@ -270,13 +267,13 @@ void ScOutlineDocFunc::AutoOutline( const ScRange& rRange, bool bRecord )
ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
ScDocument* pUndoDoc = nullptr;
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
if ( pTable )
{
if ( bRecord )
{
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
SCCOLROW nCol1, nCol2, nRow1, nRow2;
pTable->GetColArray().GetRange( nCol1, nCol2 );
@@ -306,7 +303,7 @@ void ScOutlineDocFunc::AutoOutline( const ScRange& rRange, bool bRecord )
new ScUndoAutoOutline( &rDocShell,
nStartCol, nStartRow, nTab,
nEndCol, nEndRow, nTab,
- pUndoDoc, pUndoTab ) );
+ pUndoDoc, std::move(pUndoTab) ) );
}
rDoc.SetStreamValid(nTab, false);
@@ -335,7 +332,7 @@ bool ScOutlineDocFunc::SelectLevel( SCTAB nTab, bool bColumns, sal_uInt16 nLevel
// this is a temporarily workaround
if (!comphelper::LibreOfficeKit::isActive() && bRecord )
{
- ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ std::unique_ptr<ScOutlineTable> pUndoTab(new ScOutlineTable( *pTable ));
ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
if (bColumns)
{
@@ -353,7 +350,7 @@ bool ScOutlineDocFunc::SelectLevel( SCTAB nTab, bool bColumns, sal_uInt16 nLevel
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoOutlineLevel( &rDocShell,
nStart, nEnd, nTab, //! calculate start and end
- pUndoDoc, pUndoTab,
+ pUndoDoc, std::move(pUndoTab),
bColumns, nLevel ) );
}
@@ -457,7 +454,7 @@ bool ScOutlineDocFunc::ShowMarkedOutlines( const ScRange& rRange, bool bRecord )
// this is a temporarily workaround
if ( !comphelper::LibreOfficeKit::isActive() && bRecord )
{
- ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ std::unique_ptr<ScOutlineTable> pUndoTab(new ScOutlineTable( *pTable ));
ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
pUndoDoc->InitUndo( &rDoc, nTab, nTab, true, true );
rDoc.CopyToDocument(nStartCol, 0, nTab, nEndCol, MAXROW, nTab, InsertDeleteFlags::NONE, false, *pUndoDoc);
@@ -466,7 +463,7 @@ bool ScOutlineDocFunc::ShowMarkedOutlines( const ScRange& rRange, bool bRecord )
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoOutlineBlock( &rDocShell,
nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
- pUndoDoc, pUndoTab, true ) );
+ pUndoDoc, std::move(pUndoTab), true ) );
}
// Columns
@@ -583,7 +580,7 @@ bool ScOutlineDocFunc::HideMarkedOutlines( const ScRange& rRange, bool bRecord )
// this is a temporarily workaround
if ( !comphelper::LibreOfficeKit::isActive() && bRecord )
{
- ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ std::unique_ptr<ScOutlineTable> pUndoTab(new ScOutlineTable( *pTable ));
ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
pUndoDoc->InitUndo( &rDoc, nTab, nTab, true, true );
rDoc.CopyToDocument(static_cast<SCCOL>(nEffStartCol), 0, nTab,
@@ -594,7 +591,7 @@ bool ScOutlineDocFunc::HideMarkedOutlines( const ScRange& rRange, bool bRecord )
rDocShell.GetUndoManager()->AddUndoAction(
new ScUndoOutlineBlock( &rDocShell,
nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
- pUndoDoc, pUndoTab, false ) );
+ pUndoDoc, std::move(pUndoTab), false ) );
}
// Columns
diff --git a/sc/source/ui/inc/undoblk.hxx b/sc/source/ui/inc/undoblk.hxx
index 90100c3ac292..f36842ce1cdc 100644
--- a/sc/source/ui/inc/undoblk.hxx
+++ b/sc/source/ui/inc/undoblk.hxx
@@ -365,7 +365,7 @@ public:
SCCOLROW nNewEnd, SCTAB nNewEndTab,
ScDocument* pNewUndoDoc,
const std::vector<sc::ColRowSpan>& rRanges,
- ScOutlineTable* pNewUndoTab,
+ std::unique_ptr<ScOutlineTable> pNewUndoTab,
ScSizeMode eNewMode, sal_uInt16 nNewSizeTwips,
bool bNewWidth );
virtual ~ScUndoWidthOrHeight() override;
diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx
index bb8a86213ba1..b9155ddbeb8a 100644
--- a/sc/source/ui/inc/undodat.hxx
+++ b/sc/source/ui/inc/undodat.hxx
@@ -74,7 +74,7 @@ public:
ScUndoMakeOutline( ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScOutlineTable* pNewUndoTab,
+ std::unique_ptr<ScOutlineTable> pNewUndoTab,
bool bNewColumns, bool bNewMake );
virtual ~ScUndoMakeOutline() override;
@@ -99,7 +99,7 @@ class ScUndoOutlineLevel: public ScSimpleUndo
public:
ScUndoOutlineLevel(ScDocShell* pNewDocShell,
SCCOLROW nNewStart, SCCOLROW nNewEnd, SCTAB nNewTab,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab,
bool bNewColumns, sal_uInt16 nNewLevel);
virtual void Undo() override;
@@ -125,7 +125,7 @@ public:
ScUndoOutlineBlock(ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab,
bool bNewShow);
virtual void Undo() override;
@@ -149,7 +149,7 @@ public:
ScUndoRemoveAllOutlines(ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab);
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab);
virtual void Undo() override;
virtual void Redo() override;
@@ -171,7 +171,7 @@ public:
ScUndoAutoOutline(ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab);
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab);
virtual void Undo() override;
virtual void Redo() override;
@@ -192,7 +192,7 @@ class ScUndoSubTotals: public ScDBFuncUndo
public:
ScUndoSubTotals(ScDocShell* pNewDocShell, SCTAB nNewTab,
const ScSubTotalParam& rNewParam, SCROW nNewEndY,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab,
ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB);
virtual void Undo() override;
diff --git a/sc/source/ui/undo/undoblk2.cxx b/sc/source/ui/undo/undoblk2.cxx
index 8334c05dd455..78a6d898a8c3 100644
--- a/sc/source/ui/undo/undoblk2.cxx
+++ b/sc/source/ui/undo/undoblk2.cxx
@@ -39,7 +39,7 @@ ScUndoWidthOrHeight::ScUndoWidthOrHeight( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
SCCOLROW nNewStart, SCTAB nNewStartTab, SCCOLROW nNewEnd, SCTAB nNewEndTab,
ScDocument* pNewUndoDoc, const std::vector<sc::ColRowSpan>& rRanges,
- ScOutlineTable* pNewUndoTab,
+ std::unique_ptr<ScOutlineTable> pNewUndoTab,
ScSizeMode eNewMode, sal_uInt16 nNewSizeTwips, bool bNewWidth ) :
ScSimpleUndo( pNewDocShell ),
aMarkData( rMark ),
@@ -48,7 +48,7 @@ ScUndoWidthOrHeight::ScUndoWidthOrHeight( ScDocShell* pNewDocShell,
nStartTab( nNewStartTab ),
nEndTab( nNewEndTab ),
pUndoDoc( pNewUndoDoc ),
- pUndoTab( pNewUndoTab ),
+ pUndoTab( std::move(pNewUndoTab) ),
maRanges(rRanges),
nNewSize( nNewSizeTwips ),
bWidth( bNewWidth ),
diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx
index 5c6c11acbdb8..5bd7e6adf551 100644
--- a/sc/source/ui/undo/undodat.cxx
+++ b/sc/source/ui/undo/undodat.cxx
@@ -144,11 +144,11 @@ bool ScUndoDoOutline::CanRepeat(SfxRepeatTarget& /* rTarget */) const
ScUndoMakeOutline::ScUndoMakeOutline( ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScOutlineTable* pNewUndoTab, bool bNewColumns, bool bNewMake ) :
+ std::unique_ptr<ScOutlineTable> pNewUndoTab, bool bNewColumns, bool bNewMake ) :
ScSimpleUndo( pNewDocShell ),
aBlockStart( nStartX, nStartY, nStartZ ),
aBlockEnd( nEndX, nEndY, nEndZ ),
- pUndoTable( pNewUndoTab ),
+ pUndoTable( std::move(pNewUndoTab) ),
bColumns( bNewColumns ),
bMake( bNewMake )
{
@@ -226,14 +226,14 @@ bool ScUndoMakeOutline::CanRepeat(SfxRepeatTarget& rTarget) const
ScUndoOutlineLevel::ScUndoOutlineLevel( ScDocShell* pNewDocShell,
SCCOLROW nNewStart, SCCOLROW nNewEnd, SCTAB nNewTab,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab,
bool bNewColumns, sal_uInt16 nNewLevel )
: ScSimpleUndo(pNewDocShell)
, nStart(nNewStart)
, nEnd(nNewEnd)
, nTab(nNewTab)
, xUndoDoc(pNewUndoDoc)
- , xUndoTable(pNewUndoTab)
+ , xUndoTable(std::move(pNewUndoTab))
, bColumns(bNewColumns)
, nLevel(nNewLevel)
{
@@ -308,12 +308,12 @@ bool ScUndoOutlineLevel::CanRepeat(SfxRepeatTarget& rTarget) const
ScUndoOutlineBlock::ScUndoOutlineBlock( ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab, bool bNewShow ) :
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab, bool bNewShow ) :
ScSimpleUndo( pNewDocShell ),
aBlockStart( nStartX, nStartY, nStartZ ),
aBlockEnd( nEndX, nEndY, nEndZ ),
xUndoDoc(pNewUndoDoc),
- xUndoTable(pNewUndoTab),
+ xUndoTable(std::move(pNewUndoTab)),
bShow( bNewShow )
{
}
@@ -408,12 +408,12 @@ bool ScUndoOutlineBlock::CanRepeat(SfxRepeatTarget& rTarget) const
ScUndoRemoveAllOutlines::ScUndoRemoveAllOutlines(ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab)
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab)
: ScSimpleUndo(pNewDocShell)
, aBlockStart(nStartX, nStartY, nStartZ)
, aBlockEnd(nEndX, nEndY, nEndZ)
, xUndoDoc(pNewUndoDoc)
- , xUndoTable(pNewUndoTab)
+ , xUndoTable(std::move(pNewUndoTab))
{
}
@@ -489,12 +489,12 @@ bool ScUndoRemoveAllOutlines::CanRepeat(SfxRepeatTarget& rTarget) const
ScUndoAutoOutline::ScUndoAutoOutline(ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab)
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab)
: ScSimpleUndo(pNewDocShell)
, aBlockStart(nStartX, nStartY, nStartZ)
, aBlockEnd(nEndX, nEndY, nEndZ)
, xUndoDoc(pNewUndoDoc)
- , xUndoTable(pNewUndoTab)
+ , xUndoTable(std::move(pNewUndoTab))
{
}
@@ -585,7 +585,7 @@ bool ScUndoAutoOutline::CanRepeat(SfxRepeatTarget& rTarget) const
ScUndoSubTotals::ScUndoSubTotals(ScDocShell* pNewDocShell, SCTAB nNewTab,
const ScSubTotalParam& rNewParam, SCROW nNewEndY,
- ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScDocument* pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab,
ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB)
: ScDBFuncUndo(pNewDocShell, ScRange(rNewParam.nCol1, rNewParam.nRow1, nNewTab,
rNewParam.nCol2, rNewParam.nRow2, nNewTab))
@@ -593,7 +593,7 @@ ScUndoSubTotals::ScUndoSubTotals(ScDocShell* pNewDocShell, SCTAB nNewTab,
, aParam(rNewParam)
, nNewEndRow(nNewEndY)
, xUndoDoc(pNewUndoDoc)
- , xUndoTable(pNewUndoTab)
+ , xUndoTable(std::move(pNewUndoTab))
, xUndoRange(pNewUndoRange)
, xUndoDB(pNewUndoDB)
{
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index f5b1e6b9d670..b00359412132 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -438,7 +438,7 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, bool bRecord,
ScSubTotalParam aNewParam( rParam ); // change end of range
ScDocument* pUndoDoc = nullptr;
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
ScRangeName* pUndoRange = nullptr;
ScDBCollection* pUndoDB = nullptr;
@@ -450,7 +450,7 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, bool bRecord,
ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
if (pTable)
{
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
SCCOLROW nOutStartCol; // row/column status
SCCOLROW nOutStartRow;
@@ -526,7 +526,7 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, bool bRecord,
pDocSh->GetUndoManager()->AddUndoAction(
new ScUndoSubTotals( pDocSh, nTab,
rParam, aNewParam.nRow2,
- pUndoDoc, pUndoTab, // pUndoDBData,
+ pUndoDoc, std::move(pUndoTab), // pUndoDBData,
pUndoRange, pUndoDB ) );
}
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index a940afba1bea..a1baca741e0e 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -2063,7 +2063,7 @@ void ScViewFunc::SetWidthOrHeight(
}
ScDocument* pUndoDoc = nullptr;
- ScOutlineTable* pUndoTab = nullptr;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
std::vector<sc::ColRowSpan> aUndoRanges;
if ( bRecord )
@@ -2099,7 +2099,7 @@ void ScViewFunc::SetWidthOrHeight(
//! outlines from all tab?
ScOutlineTable* pTable = rDoc.GetOutlineTable( nCurTab );
if (pTable)
- pUndoTab = new ScOutlineTable( *pTable );
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
}
if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
@@ -2225,14 +2225,14 @@ void ScViewFunc::SetWidthOrHeight(
}
if (!bOutline)
- DELETEZ(pUndoTab);
+ pUndoTab.reset();
if (bRecord)
{
pDocSh->GetUndoManager()->AddUndoAction(
new ScUndoWidthOrHeight(
pDocSh, aMarkData, nStart, nCurTab, nEnd, nCurTab,
- pUndoDoc, aUndoRanges, pUndoTab, eMode, nSizeTwips, bWidth));
+ pUndoDoc, aUndoRanges, std::move(pUndoTab), eMode, nSizeTwips, bWidth));
}
if (nCurX < 0)