diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-04-19 12:45:01 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-04-19 17:37:08 +0200 |
commit | 751d34ee3a8b01f4c3912f586e4480680fd48222 (patch) | |
tree | 1166ffe1795f0cdec2a957fb0f64e1dcb213272f | |
parent | f2ed38c23d04d61f135560b67f24805da3e40be9 (diff) |
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 <caolanm@redhat.com>
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150617
-rw-r--r-- | sfx2/source/dialog/StyleList.cxx | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/sfx2/source/dialog/StyleList.cxx b/sfx2/source/dialog/StyleList.cxx index a25050ead918..ded3822b1ebf 100644 --- a/sfx2/source/dialog/StyleList.cxx +++ b/sfx2/source/dialog/StyleList.cxx @@ -1557,17 +1557,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(); + } } } |