sd/source/ui/dlg/sdtreelb.cxx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-)
New commits: commit 986952dd52861563006d0ba178e8bdd44247af81 Author: Jim Raykowski <rayk...@gmail.com> AuthorDate: Thu Dec 3 17:57:18 2020 -0900 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Dec 4 08:09:30 2020 +0100 tdf#34828 sd navigator: fix crash when page item entry is selected Page items in the tree are given user data value 1. Drawing obect items are given user data value of the object pointer they represent. Need to check that the user data is not 1 before casting to an object pointer. Change-Id: I58109e556268e805f62ad2f16b363411e4341d2a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107185 Tested-by: Noel Grandin <noel.gran...@collabora.co.uk> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 12ba6be2cf45..ed84546be179 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -702,15 +702,23 @@ void SdPageObjsTLV::Select() if (m_bSelectionHandlerNavigates) { - SdrObject* pObject = reinterpret_cast<SdrObject*>(m_xTreeView->get_selected_id().toInt64()); - if (pObject && pObject->GetName().isEmpty()) + // Page items in the tree are given user data value 1. + // Drawing object items are given user data value of the object pointer they represent. + sal_Int64 nUserData = m_xTreeView->get_selected_id().toInt64(); + if (nUserData != 1) { - const bool bUndo = pObject->getSdrModelFromSdrObject().IsUndoEnabled(); - pObject->getSdrModelFromSdrObject().EnableUndo(false); - pObject->SetName(m_xTreeView->get_selected_text(), false); - m_aRowActivatedHdl.Call(*m_xTreeView); - pObject->SetName(OUString(), false); - pObject->getSdrModelFromSdrObject().EnableUndo(bUndo); + SdrObject* pObject = reinterpret_cast<SdrObject*>(nUserData); + if (pObject && pObject->GetName().isEmpty()) + { + const bool bUndo = pObject->getSdrModelFromSdrObject().IsUndoEnabled(); + pObject->getSdrModelFromSdrObject().EnableUndo(false); + pObject->SetName(m_xTreeView->get_selected_text(), false); + m_aRowActivatedHdl.Call(*m_xTreeView); + pObject->SetName(OUString(), false); + pObject->getSdrModelFromSdrObject().EnableUndo(bUndo); + } + else + m_aRowActivatedHdl.Call(*m_xTreeView); } else m_aRowActivatedHdl.Call(*m_xTreeView); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits