diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-07-06 16:23:51 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-07-06 20:46:32 +0200 |
commit | d299dc45409503ec4500b07c517b25e06438c611 (patch) | |
tree | ea942f68fb81f31f7280c1de5294ecdf2de48591 /basctl | |
parent | c1325c99f449909282ec7b592be10b62bbce2889 (diff) |
Resolves: tdf#134551 ModulWindow deleted when last module removed
leaving a dangling reference to m_aName. Hold a reference until
ExecuteCommand is finished.
Change-Id: I82ac5cc73427a945c78b9317dee9edf6129bb975
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98214
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'basctl')
-rw-r--r-- | basctl/source/basicide/baside2.cxx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx index 46014b5e32db..f8964c96c3b8 100644 --- a/basctl/source/basicide/baside2.cxx +++ b/basctl/source/basicide/baside2.cxx @@ -1009,8 +1009,13 @@ void ModulWindow::ExecuteCommand (SfxRequest& rReq) case SID_BASICIDE_DELETECURRENT: { if (QueryDelModule(m_aName, GetFrameWeld())) + { + // tdf#134551 don't delete the window if last module is removed until this block + // is complete + VclPtr<ModulWindow> xKeepRef(this); if (m_aDocument.removeModule(m_aLibName, m_aName)) MarkDocumentModified(m_aDocument); + } } break; case FID_SEARCH_OFF: @@ -1050,7 +1055,6 @@ void ModulWindow::ExecuteGlobal (SfxRequest& rReq) } } - void ModulWindow::GetState( SfxItemSet &rSet ) { SfxWhichIter aIter(rSet); |