summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2021-07-23 17:48:00 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2021-07-23 21:17:32 +0200
commit64a55fe5f457e4b3d5222deb560f6d5072696160 (patch)
tree4b88aa96153d847f24a89286e6908312a5ee6c3b /sc
parentba4f191300779cbd9e536d11c02895541fef24be (diff)
tdf#143515: avoid memory leak in ScDrawLayer::DeleteObjectsInArea
... and in ScDrawLayer::DeleteObjectsInSelection. We are calling SdrObjList::RemoveObject, which orphans the object. Let the undo object own the SdrObject, and dispose it when needed. Was that way ever since d0484bcdcbffd42d242647a2fdc1a203d176b775 "initial import". Change-Id: I5f2cb9d8ed0e02d45d2699af4a228c7fd097008c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119435 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/data/drwlayer.cxx4
1 files changed, 2 insertions, 2 deletions
diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index 7d31106ee7d7..1174cb656019 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -1591,7 +1591,7 @@ void ScDrawLayer::DeleteObjectsInArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1,
if (bRecording)
for (auto p : ppObj)
- AddCalcUndo(std::make_unique<SdrUndoRemoveObj>(*p));
+ AddCalcUndo(std::make_unique<SdrUndoDelObj>(*p));
for (auto p : ppObj)
pPage->RemoveObject(p->GetOrdNum());
@@ -1661,7 +1661,7 @@ void ScDrawLayer::DeleteObjectsInSelection( const ScMarkData& rMark )
if (bRecording)
for (auto p : ppObj)
- AddCalcUndo(std::make_unique<SdrUndoRemoveObj>(*p));
+ AddCalcUndo(std::make_unique<SdrUndoDelObj>(*p));
for (auto p : ppObj)
pPage->RemoveObject(p->GetOrdNum());