[Libreoffice-commits] core.git: basctl/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Mon Jul 6 18:47:18 UTC 2020


 basctl/source/basicide/baside2.cxx |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

New commits:
commit d299dc45409503ec4500b07c517b25e06438c611
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Jul 6 16:23:51 2020 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Jul 6 20:46:32 2020 +0200

    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 at redhat.com>

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);


More information about the Libreoffice-commits mailing list