summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2015-02-26 17:10:15 +0000
committerMichael Meeks <michael.meeks@collabora.com>2015-04-09 22:23:36 +0100
commit5800a27b9c4bb6d3c766d4f2e3960b42cabdc6df (patch)
treed5708e7ec16c8565a4180917b5c4c5ce6868989f
parentabc903a5be857150b144f1439448d4f02edb0531 (diff)
dbaccess: protection against double disposes.
Change-Id: I4ce2d00248b3d3d8370cc58155ea0607d4de482b
-rw-r--r--dbaccess/source/ui/app/AppDetailPageHelper.cxx4
-rw-r--r--svtools/source/contnr/treelistbox.cxx52
2 files changed, 36 insertions, 20 deletions
diff --git a/dbaccess/source/ui/app/AppDetailPageHelper.cxx b/dbaccess/source/ui/app/AppDetailPageHelper.cxx
index 5b8da7e32e74..9f264c4c8432 100644
--- a/dbaccess/source/ui/app/AppDetailPageHelper.cxx
+++ b/dbaccess/source/ui/app/AppDetailPageHelper.cxx
@@ -257,9 +257,11 @@ void OAppDetailPageHelper::dispose()
}
m_aFL.disposeAndClear();
m_aTBPreview.disposeAndClear();
- m_aBorder.disposeAndClear();
m_aPreview.disposeAndClear();
m_aDocumentInfo.disposeAndClear();
+ m_aBorder.disposeAndClear();
+ m_aMenu.reset();
+
vcl::Window::dispose();
}
diff --git a/svtools/source/contnr/treelistbox.cxx b/svtools/source/contnr/treelistbox.cxx
index b50e746081ac..37e08bb37a1a 100644
--- a/svtools/source/contnr/treelistbox.cxx
+++ b/svtools/source/contnr/treelistbox.cxx
@@ -1546,29 +1546,43 @@ SvTreeListBox::~SvTreeListBox()
void SvTreeListBox::dispose()
{
-
- pImp->CallEventListeners( VCLEVENT_OBJECT_DYING );
- delete pImp;
- delete mpImpl->m_pLink;
- ClearTabList();
-
- delete pEdCtrl;
- pEdCtrl = 0;
- pModel->RemoveView( this );
- if ( pModel->GetRefCount() == 0 )
+ if( pImp )
{
- pModel->Clear();
- delete pModel;
- pModel = NULL;
+ pImp->CallEventListeners( VCLEVENT_OBJECT_DYING );
+ delete pImp;
+ pImp = NULL;
}
+ if( mpImpl )
+ {
+ delete mpImpl->m_pLink;
+ mpImpl->m_pLink = NULL;
+
+ ClearTabList();
+
+ delete pEdCtrl;
+ pEdCtrl = NULL;
+
+ if( pModel )
+ {
+ pModel->RemoveView( this );
+ if ( pModel->GetRefCount() == 0 )
+ {
+ pModel->Clear();
+ delete pModel;
+ pModel = NULL;
+ }
+ }
- SvTreeListBox::RemoveBoxFromDDList_Impl( *this );
+ SvTreeListBox::RemoveBoxFromDDList_Impl( *this );
+
+ if( this == pDDSource )
+ pDDSource = 0;
+ if( this == pDDTarget )
+ pDDTarget = 0;
+ delete mpImpl;
+ mpImpl = NULL;
+ }
- if( this == pDDSource )
- pDDSource = 0;
- if( this == pDDTarget )
- pDDTarget = 0;
- delete mpImpl;
Control::dispose();
}