summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>2022-06-20 10:27:26 +0200
committerSamuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>2022-06-21 11:33:16 +0200
commit499ecbf3a36990c29dc7e1fb9b0ecb1d297c2848 (patch)
tree6ed02b6705a3c5023278e65858a21800d4338c6e /vcl/source
parent3f04d692141714259a4c4f1060213cd43804d1db (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/source')
-rw-r--r--vcl/source/app/salvtables.cxx2
-rw-r--r--vcl/source/treelist/treelist.cxx6
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;