vcl/source/window/stacking.cxx |    6 ++++++
 1 file changed, 6 insertions(+)

New commits:
commit ccbb205c78c1576ac6d50bd2c5f784c2034f1084
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue May 27 17:16:21 2025 +0100
Commit:     Christian Lohmaier <[email protected]>
CommitDate: Fri May 30 13:49:39 2025 +0200

    move this check to earlier
    
    Change-Id: I3082b828327f0b235ad867001a643ad4766aa35e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185925
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>
    (cherry picked from commit dff8e9123cac3e6e942e0c081e64fe1a591c37cb)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185939
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185944
    Reviewed-by: Miklos Vajna <[email protected]>
    Reviewed-by: Christian Lohmaier <[email protected]>
    Tested-by: Christian Lohmaier <[email protected]>

diff --git a/vcl/source/window/stacking.cxx b/vcl/source/window/stacking.cxx
index 142a3750b125..4ab141a2ca66 100644
--- a/vcl/source/window/stacking.cxx
+++ b/vcl/source/window/stacking.cxx
@@ -842,6 +842,12 @@ void Window::SetParent( vcl::Window* pNewParent )
     if( !pNewParent || pNewParent == this )
         return;
 
+    if (!mpWindowImpl)
+    {
+        SAL_WARN("vcl", "Window::SetParent(): mpWindowImpl == NULL");
+        return;
+    }
+
     // check if the taskpanelist would change and move the window pointer 
accordingly
     SystemWindow *pSysWin = ImplGetLastSystemWindow(this);
     SystemWindow *pNewSysWin = nullptr;
@@ -866,12 +872,6 @@ void Window::SetParent( vcl::Window* pNewParent )
 
     ImplSetFrameParent( pNewParent );
 
-    if (!mpWindowImpl)
-    {
-        SAL_WARN("vcl", "Window::SetParent(): mpWindowImpl == NULL");
-        return;
-    }
-
     if ( mpWindowImpl->mpBorderWindow )
     {
         mpWindowImpl->mpRealParent = pNewParent;
commit 87c7014aaec106971d259c86b93c8293159d276b
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue May 27 10:04:42 2025 +0100
Commit:     Christian Lohmaier <[email protected]>
CommitDate: Fri May 30 13:49:33 2025 +0200

    crash seen with dialog open when frame closed
    
    program/libmergedlo.so
            vcl::Window::SetParent(vcl::Window*)
                    include/rtl/ref.hxx:205
    program/libmergedlo.so
            weld::MessageDialogController::~MessageDialogController()
                    vcl/source/app/weldutils.cxx:83
    program/libmergedlo.so
            
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use_cold()
                    
/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/shared_ptr_base.h:175
    program/libmergedlo.so
            std::default_delete<DialogImpl>::operator()(DialogImpl*) const 
[clone .part.0]
                    
/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/shared_ptr_base.h:354
    program/libmergedlo.so
            Dialog::dispose()
                    vcl/source/window/dialog.cxx:623
    program/libmergedlo.so
            UnoWrapper::WindowDestroyed(vcl::Window*)
                    include/rtl/ref.hxx:126
    program/libmergedlo.so
            vcl::Window::dispose()
                    include/com/sun/star/uno/Reference.h:102
    program/libmergedlo.so
            VCLXWindow::dispose()
                    include/rtl/ref.hxx:126
    program/libmergedlo.so
            (anonymous namespace)::XFrameImpl::disposing()
                    include/vcl/svapp.hxx:1351
    program/libuno_cppuhelpergcc3.so.3
            cppu::WeakComponentImplHelperBase::dispose()
                    cppuhelper/source/implbase.cxx:104
    program/libmergedlo.so
            (anonymous namespace)::XFrameImpl::close(unsigned char)
                    include/com/sun/star/uno/Reference.hxx:113
    
    Change-Id: I60870d7b47fe91a15c67a0583cb413cfdfff7bec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185890
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 8cdb6cf9a95f068d465a7fc36316f1c84547dcf8)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185922
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185943
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Christian Lohmaier <[email protected]>
    Reviewed-by: Christian Lohmaier <[email protected]>

diff --git a/vcl/source/window/stacking.cxx b/vcl/source/window/stacking.cxx
index 5ce78f69b426..142a3750b125 100644
--- a/vcl/source/window/stacking.cxx
+++ b/vcl/source/window/stacking.cxx
@@ -866,6 +866,12 @@ void Window::SetParent( vcl::Window* pNewParent )
 
     ImplSetFrameParent( pNewParent );
 
+    if (!mpWindowImpl)
+    {
+        SAL_WARN("vcl", "Window::SetParent(): mpWindowImpl == NULL");
+        return;
+    }
+
     if ( mpWindowImpl->mpBorderWindow )
     {
         mpWindowImpl->mpRealParent = pNewParent;

Reply via email to