summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-05-31 15:31:36 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-05-31 18:37:34 +0200
commit009b889616561176a230bc041699271697f95bf6 (patch)
treee6c44c7b552f8a0764ce2e5a1afe9483dff5bcb4
parent046e37faa295889157f0313f2300d93cb0f83b9e (diff)
do not throw DisposedException when inside a dispose() method
There is no need to do this, as the documentation of css.lang.XComponent::dispose at udkapi/com/sun/star/lang/XComponent.idl states: After this method has been called, the object should behave as passive as possible, thus it should ignore all calls Otherwise, the effect of throwing here is mostly to disturb the flow of logic in caller code, preventing other parts of teardown from proceeding smoothly. Change-Id: I30e6d1b35f85b727debf4405a995fdc0a4fccde6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152450 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx3
-rw-r--r--connectivity/source/drivers/firebird/Statement.cxx3
-rw-r--r--connectivity/source/sdbcx/VColumn.cxx4
-rw-r--r--dbaccess/source/core/api/RowSet.cxx2
-rw-r--r--framework/source/uielement/buttontoolbarcontroller.cxx2
-rw-r--r--framework/source/uielement/statusbarwrapper.cxx2
-rw-r--r--package/source/xstor/ocompinstream.cxx10
-rw-r--r--package/source/xstor/xstorage.cxx10
-rw-r--r--sot/source/unoolestorage/xolesimplestorage.cxx2
-rw-r--r--svl/source/fsstor/oinputstreamcontainer.cxx2
-rw-r--r--svl/source/fsstor/ostreamcontainer.cxx2
-rw-r--r--svtools/source/uno/framestatuslistener.cxx2
-rw-r--r--svtools/source/uno/statusbarcontroller.cxx2
-rw-r--r--svtools/source/uno/toolboxcontroller.cxx2
-rw-r--r--toolkit/source/hatchwindow/documentcloser.cxx2
15 files changed, 17 insertions, 33 deletions
diff --git a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
index 5c27adcbfc18..85ff5c7022c3 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
@@ -855,8 +855,7 @@ Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::getCurrentSelection(
void SAL_CALL ChartDocumentWrapper::dispose()
{
if( m_bIsDisposed )
- throw lang::DisposedException("ChartDocumentWrapper is disposed",
- static_cast< ::cppu::OWeakObject* >( this ));
+ return;
m_bIsDisposed = true;
diff --git a/connectivity/source/drivers/firebird/Statement.cxx b/connectivity/source/drivers/firebird/Statement.cxx
index 5d9abdf2ef78..d135c4e4cda4 100644
--- a/connectivity/source/drivers/firebird/Statement.cxx
+++ b/connectivity/source/drivers/firebird/Statement.cxx
@@ -70,7 +70,8 @@ void SAL_CALL OStatement::release() noexcept
void OStatement::disposeResultSet()
{
MutexGuard aGuard(m_aMutex);
- checkDisposed(OStatementCommonBase_Base::rBHelper.bDisposed);
+ if (OStatementCommonBase_Base::rBHelper.bDisposed)
+ return;
OStatementCommonBase::disposeResultSet();
diff --git a/connectivity/source/sdbcx/VColumn.cxx b/connectivity/source/sdbcx/VColumn.cxx
index a61d0619a6e3..ad9a52ed12ed 100644
--- a/connectivity/source/sdbcx/VColumn.cxx
+++ b/connectivity/source/sdbcx/VColumn.cxx
@@ -170,10 +170,6 @@ void OColumn::construct()
void OColumn::disposing()
{
OPropertySetHelper::disposing();
-
- ::osl::MutexGuard aGuard(m_aMutex);
- checkDisposed(OColumnDescriptor_BASE::rBHelper.bDisposed);
-
}
Reference< XPropertySet > SAL_CALL OColumn::createDataDescriptor( )
diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx
index b6d73a0d4869..ec4edf6f0fb4 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -2872,7 +2872,7 @@ void ORowSetClone::close()
{
MutexGuard aGuard( m_aMutex );
if (WeakComponentImplHelper::rBHelper.bDisposed)
- throw DisposedException();
+ return;
}
dispose();
}
diff --git a/framework/source/uielement/buttontoolbarcontroller.cxx b/framework/source/uielement/buttontoolbarcontroller.cxx
index d94e5b0ff25f..d100ee17113e 100644
--- a/framework/source/uielement/buttontoolbarcontroller.cxx
+++ b/framework/source/uielement/buttontoolbarcontroller.cxx
@@ -126,7 +126,7 @@ void SAL_CALL ButtonToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
if ( m_bDisposed )
- throw DisposedException();
+ return;
m_xContext.clear();
m_xURLTransformer.clear();
diff --git a/framework/source/uielement/statusbarwrapper.cxx b/framework/source/uielement/statusbarwrapper.cxx
index 7627b2f0a110..8ce6e48e5eb1 100644
--- a/framework/source/uielement/statusbarwrapper.cxx
+++ b/framework/source/uielement/statusbarwrapper.cxx
@@ -61,7 +61,7 @@ void SAL_CALL StatusBarWrapper::dispose()
SolarMutexGuard g;
if ( m_bDisposed )
- throw DisposedException();
+ return;
if ( m_xStatusBarManager.is() )
m_xStatusBarManager->dispose();
diff --git a/package/source/xstor/ocompinstream.cxx b/package/source/xstor/ocompinstream.cxx
index ef6bea3e8b06..b5931c0c0918 100644
--- a/package/source/xstor/ocompinstream.cxx
+++ b/package/source/xstor/ocompinstream.cxx
@@ -185,10 +185,7 @@ void OInputCompStream::InternalDispose()
// can be called only by OWriteStream_Impl
::osl::MutexGuard aGuard( m_xMutex->GetMutex() );
if ( m_bDisposed )
- {
- SAL_INFO("package.xstor", "Disposed!");
- throw lang::DisposedException();
- }
+ return;
// the source object is also a kind of locker for the current object
// since the listeners could dispose the object while being notified
@@ -212,10 +209,7 @@ void SAL_CALL OInputCompStream::dispose( )
{
::osl::MutexGuard aGuard( m_xMutex->GetMutex() );
if ( m_bDisposed )
- {
- SAL_INFO("package.xstor", "Disposed!");
- throw lang::DisposedException();
- }
+ return;
if ( m_pInterfaceContainer )
{
diff --git a/package/source/xstor/xstorage.cxx b/package/source/xstor/xstorage.cxx
index f94a9fbdf9b5..6e22a853c18f 100644
--- a/package/source/xstor/xstorage.cxx
+++ b/package/source/xstor/xstorage.cxx
@@ -1792,10 +1792,7 @@ OStorage::~OStorage()
void OStorage::InternalDispose( bool bNotifyImpl )
{
if ( !m_pImpl )
- {
- SAL_INFO("package.xstor", THROW_WHERE "Disposed!");
- throw lang::DisposedException( THROW_WHERE );
- }
+ return;
// the source object is also a kind of locker for the current object
// since the listeners could dispose the object while being notified
@@ -1803,10 +1800,7 @@ void OStorage::InternalDispose( bool bNotifyImpl )
m_aListenersContainer.disposeAndClear( aSource );
if ( !m_pImpl )
- {
- SAL_INFO("package.xstor", THROW_WHERE "Disposed!");
- throw lang::DisposedException( THROW_WHERE );
- }
+ return;
m_pImpl->m_nModifiedListenerCount = 0;
diff --git a/sot/source/unoolestorage/xolesimplestorage.cxx b/sot/source/unoolestorage/xolesimplestorage.cxx
index d2cb93a04647..46b82b2b538e 100644
--- a/sot/source/unoolestorage/xolesimplestorage.cxx
+++ b/sot/source/unoolestorage/xolesimplestorage.cxx
@@ -546,7 +546,7 @@ void SAL_CALL OLESimpleStorage::dispose()
std::unique_lock aGuard( m_aMutex );
if ( m_bDisposed )
- throw lang::DisposedException();
+ return;
if ( m_aListenersContainer.getLength(aGuard) )
{
diff --git a/svl/source/fsstor/oinputstreamcontainer.cxx b/svl/source/fsstor/oinputstreamcontainer.cxx
index f6481b76ff28..9c4caaea2e58 100644
--- a/svl/source/fsstor/oinputstreamcontainer.cxx
+++ b/svl/source/fsstor/oinputstreamcontainer.cxx
@@ -223,7 +223,7 @@ void SAL_CALL OFSInputStreamContainer::dispose( )
std::unique_lock aGuard( m_aMutex );
if ( m_bDisposed )
- throw lang::DisposedException();
+ return;
if ( !m_xInputStream.is() )
throw uno::RuntimeException();
diff --git a/svl/source/fsstor/ostreamcontainer.cxx b/svl/source/fsstor/ostreamcontainer.cxx
index e02ce1383df9..744d9ce5cfe1 100644
--- a/svl/source/fsstor/ostreamcontainer.cxx
+++ b/svl/source/fsstor/ostreamcontainer.cxx
@@ -208,7 +208,7 @@ void SAL_CALL OFSStreamContainer::dispose()
std::unique_lock aGuard( m_aMutex );
if ( m_bDisposed )
- throw lang::DisposedException();
+ return;
if ( !m_xStream.is() )
throw uno::RuntimeException();
diff --git a/svtools/source/uno/framestatuslistener.cxx b/svtools/source/uno/framestatuslistener.cxx
index 25152f2f3b4a..166433dff1b9 100644
--- a/svtools/source/uno/framestatuslistener.cxx
+++ b/svtools/source/uno/framestatuslistener.cxx
@@ -83,7 +83,7 @@ void SAL_CALL FrameStatusListener::dispose()
SolarMutexGuard aSolarMutexGuard;
if ( m_bDisposed )
- throw DisposedException();
+ return;
for (auto const& listener : m_aListenerMap)
{
diff --git a/svtools/source/uno/statusbarcontroller.cxx b/svtools/source/uno/statusbarcontroller.cxx
index 6a8499a353c7..7ab3a2e29c40 100644
--- a/svtools/source/uno/statusbarcontroller.cxx
+++ b/svtools/source/uno/statusbarcontroller.cxx
@@ -179,7 +179,7 @@ void SAL_CALL StatusbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
if ( m_bDisposed )
- throw DisposedException();
+ return;
}
css::lang::EventObject aEvent( xThis );
diff --git a/svtools/source/uno/toolboxcontroller.cxx b/svtools/source/uno/toolboxcontroller.cxx
index b592bb25b859..4c9611ff7dba 100644
--- a/svtools/source/uno/toolboxcontroller.cxx
+++ b/svtools/source/uno/toolboxcontroller.cxx
@@ -243,7 +243,7 @@ void SAL_CALL ToolboxController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
if ( m_bDisposed )
- throw DisposedException();
+ return;
}
css::lang::EventObject aEvent( xThis );
diff --git a/toolkit/source/hatchwindow/documentcloser.cxx b/toolkit/source/hatchwindow/documentcloser.cxx
index 800703baa59b..6ef68a6a8845 100644
--- a/toolkit/source/hatchwindow/documentcloser.cxx
+++ b/toolkit/source/hatchwindow/documentcloser.cxx
@@ -167,7 +167,7 @@ void SAL_CALL ODocumentCloser::dispose()
std::unique_lock aGuard( m_aMutex );
if ( m_bDisposed )
- throw lang::DisposedException();
+ return;
lang::EventObject aSource( static_cast< ::cppu::OWeakObject* >(this) );
m_aListenersContainer.disposeAndClear( aGuard, aSource );