diff options
author | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-06-20 10:27:26 +0200 |
---|---|---|
committer | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-06-21 11:33:16 +0200 |
commit | 499ecbf3a36990c29dc7e1fb9b0ecb1d297c2848 (patch) | |
tree | 6ed02b6705a3c5023278e65858a21800d4338c6e /vcl | |
parent | 3f04d692141714259a4c4f1060213cd43804d1db (diff) |
Fix crash when no valid EntryDescriptor found
When opening macro run dlg, the last selected entry is displayed again.
When no entry was found, a crash occured in some situations
(GetLastEntryDescriptor() returned garbage).
Initialize m_aLastEntryDesc properly, and make sure the method returns
when no last selected macro was found.
Also fix some nullptr crashes which occurred during UITests
Change-Id: I7bd1a0b8824725f9935876ae26d8222410a3bc25
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136140
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 2 | ||||
-rw-r--r-- | vcl/source/treelist/treelist.cxx | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index f548fe152b4f..b6db52c8b87d 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -4765,6 +4765,8 @@ void SalInstanceTreeView::set_text(const weld::TreeIter& rIter, const OUString& OUString SalInstanceTreeView::get_id(const weld::TreeIter& rIter) const { const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); + if (!rVclIter.iter) + return OUString(); const OUString* pStr = static_cast<const OUString*>(rVclIter.iter->GetUserData()); if (pStr) return *pStr; diff --git a/vcl/source/treelist/treelist.cxx b/vcl/source/treelist/treelist.cxx index 8f51e343fd98..fc81fa2eaa0c 100644 --- a/vcl/source/treelist/treelist.cxx +++ b/vcl/source/treelist/treelist.cxx @@ -102,6 +102,8 @@ bool SvTreeList::IsEntryVisible( const SvListView* pView, SvTreeListEntry* pEntr sal_uInt16 SvTreeList::GetDepth( const SvTreeListEntry* pEntry ) const { + if (!pEntry) + return 0; DBG_ASSERT(pEntry && pEntry!=pRootItem.get(),"GetDepth:Bad Entry"); sal_uInt16 nDepth = 0; while( pEntry && pEntry->pParent != pRootItem.get() ) @@ -1502,6 +1504,8 @@ SvTreeListEntries& SvTreeList::GetChildList( SvTreeListEntry* pParent ) const SvTreeListEntry* SvTreeList::GetParent( const SvTreeListEntry* pEntry ) const { + if (!pEntry) + return nullptr; const SvTreeListEntry* pParent = pEntry->pParent; if (pParent == pRootItem.get()) pParent = nullptr; @@ -1510,6 +1514,8 @@ const SvTreeListEntry* SvTreeList::GetParent( const SvTreeListEntry* pEntry ) co SvTreeListEntry* SvTreeList::GetParent( SvTreeListEntry* pEntry ) { + if (!pEntry) + return nullptr; SvTreeListEntry* pParent = pEntry->pParent; if (pParent == pRootItem.get()) pParent = nullptr; |