summaryrefslogtreecommitdiff
path: root/svx/source/svdraw
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2023-05-03 16:59:51 +0100
committerCaolán McNamara <caolanm@redhat.com>2023-05-04 09:50:36 +0200
commit1efb16454f813dce9dffc124b43a31e46a1b9e3f (patch)
tree61e0736527d646a48a1692a9335e4c483de1af0c /svx/source/svdraw
parente5402f1b1f5d44d5e40eede80ae05303036a4efe (diff)
tdf#108889 ref count goes negative with 0 undo levels configured
Change-Id: Ic28c3738f951af6e5371f88b4bb061a0aadf16e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151332 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svx/source/svdraw')
-rw-r--r--svx/source/svdraw/svdedtv.cxx15
1 files changed, 6 insertions, 9 deletions
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index 96e61779e04b..27015e410e9d 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -712,9 +712,9 @@ void SdrEditView::ForceMarkedObjToAnotherPage()
}
}
-std::vector<SdrObject*> SdrEditView::DeleteMarkedList(SdrMarkList const& rMark)
+std::vector<rtl::Reference<SdrObject>> SdrEditView::DeleteMarkedList(SdrMarkList const& rMark)
{
- std::vector<SdrObject*> ret;
+ std::vector<rtl::Reference<SdrObject>> ret;
if (rMark.GetMarkCount()!=0)
{
rMark.ForceSort();
@@ -761,13 +761,13 @@ std::vector<SdrObject*> SdrEditView::DeleteMarkedList(SdrMarkList const& rMark)
aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pObj));
}
- pOL->RemoveObject(nOrdNum);
-
if( !bUndo )
{
- // tdf#108863 don't delete objects before EndUndo()
+ // tdf#108863 and tdf#108889 don't delete objects before EndUndo()
ret.push_back(pObj);
}
+
+ pOL->RemoveObject(nOrdNum);
}
// fire scene updaters
@@ -865,10 +865,7 @@ void SdrEditView::DeleteMarkedObj()
// original stuff: remove selected objects. Handle clear will
// do something only once
auto temp(DeleteMarkedList(GetMarkedObjectList()));
- for (auto p : temp)
- {
- lazyDeleteObjects.push_back(p);
- }
+ lazyDeleteObjects.insert(lazyDeleteObjects.end(), temp.begin(), temp.end());
GetMarkedObjectListWriteAccess().Clear();
maHdlList.Clear();