From 4ca5536f008d1503a9c9fa8b65150baeb92e4b4c Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Thu, 30 Jan 2014 20:16:12 -0500 Subject: [PATCH] fdo#74252: Fix crash on exit with the customize dialog. pEventLB gets accessed after it's been deleted. Moving the code that accesses it to before it gets deleted fixes the crash. Change-Id: If559fe3ea7dd76a3394d0aa7c18c9329188aa17f --- cui/source/customize/eventdlg.cxx | 12 ++++++++++++ cui/source/customize/macropg.cxx | 10 ---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cui/source/customize/eventdlg.cxx b/cui/source/customize/eventdlg.cxx index 02888d3f505d..dd61fc2e7884 100644 --- a/cui/source/customize/eventdlg.cxx +++ b/cui/source/customize/eventdlg.cxx @@ -39,6 +39,7 @@ #include #include #include +#include #include "headertablistbox.hxx" #include "macropg_impl.hxx" @@ -108,7 +109,18 @@ void SvxEventConfigPage::LateInit( const uno::Reference< frame::XFrame >& _rxFra SvxEventConfigPage::~SvxEventConfigPage() { + // need to delete the user data + SvHeaderTabListBox& rListBox = mpImpl->pEventLB->GetListBox(); + SvTreeListEntry* pE = rListBox.GetEntry( 0 ); + while( pE ) + { + OUString* pEventName = (OUString*)pE->GetUserData(); + delete pEventName; + pE->SetUserData((void*)0); + pE = rListBox.NextSibling( pE ); + } delete mpImpl->pEventLB; + delete mpImpl->pAssignFT; delete mpImpl->pAssignPB; delete mpImpl->pDeletePB; diff --git a/cui/source/customize/macropg.cxx b/cui/source/customize/macropg.cxx index 99b962fd0db1..9f0fe1d93d0f 100644 --- a/cui/source/customize/macropg.cxx +++ b/cui/source/customize/macropg.cxx @@ -250,16 +250,6 @@ _SvxMacroTabPage::_SvxMacroTabPage(Window* pParent, const OString& rID, _SvxMacroTabPage::~_SvxMacroTabPage() { - // need to delete the user data - SvHeaderTabListBox& rListBox = mpImpl->pEventLB->GetListBox(); - SvTreeListEntry* pE = rListBox.GetEntry( 0 ); - while( pE ) - { - OUString* pEventName = (OUString*)pE->GetUserData(); - delete pEventName; - pE->SetUserData((void*)0); - pE = rListBox.NextSibling( pE ); - } DELETEZ( mpImpl ); } // -----------------------------------------------------------------------------