sc/source/core/data/drwlayer.cxx |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit 99420dc0b80df22d12519efca05803898fbfcfbd
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Fri Jul 23 17:48:00 2021 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Aug 10 19:33:11 2021 +0200

    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.kagan...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120223
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index 5b70046e4448..1ead0b8fe872 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -1598,7 +1598,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());
@@ -1668,7 +1668,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());

Reply via email to