summaryrefslogtreecommitdiff
path: root/svx/source/svdraw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-05-10 14:19:16 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2021-05-11 09:37:51 +0200
commit9243345722354ca170c5c6b5b6cb73d8e1cb958f (patch)
tree5d2a95516099a91c3b5ab4d96f76c40f1bd59e02 /svx/source/svdraw
parent8630f4299e885640f16b644033a4964de5c4af2c (diff)
svx: fix crash with active text edit vs slide delete
The problem is that SdrObjEditView::HideSdrPage() may delete SdrPaintView::mpPageView when it calls SdrGlueEditView::HideSdrPage(). But SdrObjEditView::pTextEditPV is a non-owning reference to that. GetTextEditBackgroundColor() in svx/ calls SdrObjEditView::GetTextEditPageView(), so in case SdrObjEditView::pTextEditPV is not cleared, we would access a deleted SdrPageView. (cherry picked from commit 014f33066a99488c52d10d8f5ff470ca6e2242f6) Change-Id: I948bae8e0e8d557e38aa8f243e9eea522b21a043 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115341 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svx/source/svdraw')
-rw-r--r--svx/source/svdraw/svdedxv.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 43ea7336af56..fefeb43fe7bc 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -210,6 +210,12 @@ void SdrObjEditView::HideSdrPage()
{
lcl_RemoveTextEditOutlinerViews(this, GetSdrPageView(), GetFirstOutputDevice());
+ if (pTextEditPV == GetSdrPageView())
+ {
+ // HideSdrPage() will clear mpPageView, avoid a dangling pointer.
+ pTextEditPV = nullptr;
+ }
+
SdrGlueEditView::HideSdrPage();
}