sfx2/source/dialog/StyleList.cxx |   23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

New commits:
commit e3de8ecc744a27fa3b8d9ad90a669bcc58d66f63
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Apr 19 12:45:01 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Apr 19 20:53:16 2023 +0200

    sfx2: fix crash in StyleList::CustomRenderHdl
    
    GetFamilyItem() might return nullptr
    See 
https://crashreport.libreoffice.org/stats/signature/StyleList::CustomRenderHdl(std::tuple%3COutputDevice%20&,tools::Rectangle%20const%20&,bool,rtl::OUString%20const%20&%3E)
    
    Change-Id: I099f045232aac710c4f26148de5e798d00ecc7ec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150602
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150636

diff --git a/sfx2/source/dialog/StyleList.cxx b/sfx2/source/dialog/StyleList.cxx
index 59455758e890..1fc98c3ca8ec 100644
--- a/sfx2/source/dialog/StyleList.cxx
+++ b/sfx2/source/dialog/StyleList.cxx
@@ -1558,17 +1558,20 @@ IMPL_LINK(StyleList, CustomRenderHdl, 
weld::TreeView::render_args, aPayload, voi
 
     if (pStyleManager)
     {
-        const SfxStyleFamilyItem* pItem = GetFamilyItem();
-        SfxStyleSheetBase* pStyleSheet = pStyleManager->Search(rId, 
pItem->GetFamily());
-
-        if (pStyleSheet)
+        if (const SfxStyleFamilyItem* pItem = GetFamilyItem())
         {
-            rRenderContext.Push(vcl::PushFlags::ALL);
-            sal_Int32 nSize = aRect.GetHeight();
-            std::unique_ptr<sfx2::StylePreviewRenderer> pStylePreviewRenderer(
-                pStyleManager->CreateStylePreviewRenderer(rRenderContext, 
pStyleSheet, nSize));
-            bSuccess = pStylePreviewRenderer->recalculate() && 
pStylePreviewRenderer->render(aRect);
-            rRenderContext.Pop();
+            SfxStyleSheetBase* pStyleSheet = pStyleManager->Search(rId, 
pItem->GetFamily());
+
+            if (pStyleSheet)
+            {
+                rRenderContext.Push(vcl::PushFlags::ALL);
+                sal_Int32 nSize = aRect.GetHeight();
+                std::unique_ptr<sfx2::StylePreviewRenderer> 
pStylePreviewRenderer(
+                    pStyleManager->CreateStylePreviewRenderer(rRenderContext, 
pStyleSheet, nSize));
+                bSuccess
+                    = pStylePreviewRenderer->recalculate() && 
pStylePreviewRenderer->render(aRect);
+                rRenderContext.Pop();
+            }
         }
     }
 

Reply via email to