diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2021-05-10 14:19:16 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-05-10 15:19:52 +0200 |
commit | 014f33066a99488c52d10d8f5ff470ca6e2242f6 (patch) | |
tree | 4ed84812dd04f0d888f58b8cc5cd9fc67efd1926 /svx | |
parent | 0afb2b63b38dff138e66f4ac8afed60911cb6aad (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.
Change-Id: I948bae8e0e8d557e38aa8f243e9eea522b21a043
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115324
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdedxv.cxx | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index 95379012be54..bb56488428db 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -195,6 +195,12 @@ void SdrObjEditView::HideSdrPage() { lcl_RemoveTextEditOutlinerViews(this, GetSdrPageView(), GetFirstOutputDevice()); + if (pTextEditPV == GetSdrPageView()) + { + // HideSdrPage() will clear mpPageView, avoid a dangling pointer. + pTextEditPV = nullptr; + } + SdrGlueEditView::HideSdrPage(); } |