vcl/source/window/dialog.cxx |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 3cfe453c89bcbcb1ef6c36f0961ae1400061f029
Author:     Miklos Vajna <[email protected]>
AuthorDate: Thu Feb 12 10:03:58 2026 +0100
Commit:     Miklos Vajna <[email protected]>
CommitDate: Thu Feb 12 18:31:18 2026 +0100

    vcl: fix crash in Dialog::PixelInvalidate()
    
    gdb backtrace on the crashreport core dump:
    
            #0  0x000076a39e91a0fb in Dialog::PixelInvalidate (this=0x38b519c0, 
pRectangle=0x7ffc82c86cf0)
                at vcl/source/window/dialog.cxx:403
            #1  0x000076a39e8db071 in vcl::Window::PixelInvalidate 
(this=0x388b1b50, pRectangle=<optimized out>)
                at include/rtl/ref.hxx:203
            #2  0x000076a39e9adcb3 in vcl::Window::queue_resize 
(this=0x388b1b50, eReason=<optimized out>)
                at vcl/source/window/window2.cxx:1453
            #3  0x000076a39e9ac0e0 in vcl::(anonymous 
namespace)::queue_ungrouped_resize (pOrigWindow=pOrigWindow@entry=0x38b50a30)
                at vcl/source/window/window2.cxx:1389
    
    Seeing that Dialog::dispose() can reset mpDialogImpl, check for the case
    when mpDialogImpl is nullptr in Dialog::PixelInvalidate().
    
    Change-Id: I752f792291abac9af657e58b3257b55cca011ca3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199272
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 6fb54332b2c8..f0e190318120 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -404,7 +404,7 @@ void Dialog::ImplInitDialogData()
 
 void Dialog::PixelInvalidate(const tools::Rectangle* pRectangle)
 {
-    if (!mpDialogImpl->m_bLOKTunneling)
+    if (!mpDialogImpl || !mpDialogImpl->m_bLOKTunneling)
         return;
 
     Window::PixelInvalidate(pRectangle);

Reply via email to