diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-07-23 17:48:00 +0200 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-07-23 21:17:32 +0200 |
commit | 64a55fe5f457e4b3d5222deb560f6d5072696160 (patch) | |
tree | 4b88aa96153d847f24a89286e6908312a5ee6c3b /sc | |
parent | ba4f191300779cbd9e536d11c02895541fef24be (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.cxx | 4 |
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()); |