summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2003-07-25 10:37:55 +0000
committerVladimir Glazounov <vg@openoffice.org>2003-07-25 10:37:55 +0000
commite4d3fa9c27fce9ac458618c46aa7bbfd6b0ea9a7 (patch)
tree01994f85162c4db9394d9c505611fbbb0c936619 /ucb
parent793b7fee4373f6a12d6480a1c2a696f95502db60 (diff)
INTEGRATION: CWS abi3 (1.29.20); FILE MERGED
2003/07/10 11:53:42 abi 1.29.20.1: #110668# dispose now deletes container
Diffstat (limited to 'ucb')
-rw-r--r--ucb/source/ucp/file/bc.cxx66
1 files changed, 45 insertions, 21 deletions
diff --git a/ucb/source/ucp/file/bc.cxx b/ucb/source/ucp/file/bc.cxx
index 7e01816e2c21..860e7e5ed885 100644
--- a/ucb/source/ucp/file/bc.cxx
+++ b/ucb/source/ucp/file/bc.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: bc.cxx,v $
*
- * $Revision: 1.29 $
+ * $Revision: 1.30 $
*
- * last change: $Author: abi $ $Date: 2003-05-08 09:51:01 $
+ * last change: $Author: vg $ $Date: 2003-07-25 11:37:55 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -208,14 +208,10 @@ BaseContent::~BaseContent( )
}
m_pMyShell->m_pProvider->release();
- if( m_pDisposeEventListeners )
- delete m_pDisposeEventListeners;
- if( m_pContentEventListeners )
- delete m_pContentEventListeners;
- if( m_pPropertyListener )
- delete m_pPropertyListener;
- if( m_pPropertySetInfoChangeListeners )
- delete m_pPropertySetInfoChangeListeners;
+ delete m_pDisposeEventListeners;
+ delete m_pContentEventListeners;
+ delete m_pPropertyListener;
+ delete m_pPropertySetInfoChangeListeners;
}
@@ -293,22 +289,47 @@ void SAL_CALL
BaseContent::dispose()
throw( RuntimeException )
{
- vos::OGuard aGuard( m_aMutex );
lang::EventObject aEvt;
- aEvt.Source = static_cast< XContent* >( this );
+ cppu::OInterfaceContainerHelper* pDisposeEventListeners;
+ cppu::OInterfaceContainerHelper* pContentEventListeners;
+ cppu::OInterfaceContainerHelper* pPropertySetInfoChangeListeners;
+ PropertyListeners* pPropertyListener;
+
+ {
+ vos::OGuard aGuard( m_aMutex );
+ aEvt.Source = static_cast< XContent* >( this );
- if ( m_pDisposeEventListeners && m_pDisposeEventListeners->getLength() )
- m_pDisposeEventListeners->disposeAndClear( aEvt );
- if ( m_pContentEventListeners && m_pContentEventListeners->getLength() )
- m_pContentEventListeners->disposeAndClear( aEvt );
+ pDisposeEventListeners =
+ m_pDisposeEventListeners, m_pDisposeEventListeners = 0;
- if( m_pPropertyListener )
- m_pPropertyListener->disposeAndClear( aEvt );
+ pContentEventListeners =
+ m_pContentEventListeners, m_pContentEventListeners = 0;
- if( m_pPropertySetInfoChangeListeners )
- m_pPropertySetInfoChangeListeners->disposeAndClear( aEvt );
+ pPropertySetInfoChangeListeners =
+ m_pPropertySetInfoChangeListeners,
+ m_pPropertySetInfoChangeListeners = 0;
+ pPropertyListener =
+ m_pPropertyListener, m_pPropertyListener = 0;
+ }
+
+ if ( pDisposeEventListeners && pDisposeEventListeners->getLength() )
+ pDisposeEventListeners->disposeAndClear( aEvt );
+
+ if ( pContentEventListeners && pContentEventListeners->getLength() )
+ pContentEventListeners->disposeAndClear( aEvt );
+
+ if( pPropertyListener )
+ pPropertyListener->disposeAndClear( aEvt );
+
+ if( pPropertySetInfoChangeListeners )
+ pPropertySetInfoChangeListeners->disposeAndClear( aEvt );
+
+ delete pDisposeEventListeners;
+ delete pContentEventListeners;
+ delete pPropertyListener;
+ delete pPropertySetInfoChangeListeners;
}
@@ -531,11 +552,14 @@ BaseContent::removePropertiesChangeListener( const Sequence< rtl::OUString >& Pr
const Reference< beans::XPropertiesChangeListener >& Listener )
throw( RuntimeException )
{
- if( ! Listener.is() || ! m_pPropertyListener )
+ if( ! Listener.is() )
return;
vos::OGuard aGuard( m_aMutex );
+ if( ! m_pPropertyListener )
+ return;
+
for( sal_Int32 i = 0; i < PropertyNames.getLength(); ++i )
m_pPropertyListener->removeInterface( PropertyNames[i],Listener );