vcl/source/window/stacking.cxx | 6 ++++++ 1 file changed, 6 insertions(+)
New commits: commit 8cdb6cf9a95f068d465a7fc36316f1c84547dcf8 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Tue May 27 10:04:42 2025 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Tue May 27 13:18:51 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 <caolan.mcnam...@collabora.com> Tested-by: Jenkins 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;