diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-07-12 15:05:41 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-07-12 15:05:41 +0200 |
commit | 9624bde1c36a3c1b86d8d88f97bc729ac4d65853 (patch) | |
tree | 571c4cb9eaed69a45bb67b98b9635251adf07dbe /connectivity/source | |
parent | e4b3772ef966fb3db8dfaa55dfc5f5582d61761d (diff) |
tdf#100866: Don't let exception pass connectivity::release
...which is only ever called from onexcept XInterface::release overrides:
connectivity::release itself appears to be only called from
connectivity::OSubComponent::relase_ChildImpl [sic], which in turn is only
called from various XInterface::release overrides across connectivity.
Change-Id: I94b682ec531acecd0ef9f8c100f67a71c361941e
Diffstat (limited to 'connectivity/source')
-rw-r--r-- | connectivity/source/commontools/dbtools.cxx | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/connectivity/source/commontools/dbtools.cxx b/connectivity/source/commontools/dbtools.cxx index 701c64d7e63d..1c1dbfe150a9 100644 --- a/connectivity/source/commontools/dbtools.cxx +++ b/connectivity/source/commontools/dbtools.cxx @@ -1965,7 +1965,7 @@ namespace connectivity void release(oslInterlockedCount& _refCount, ::cppu::OBroadcastHelper& rBHelper, Reference< XInterface >& _xInterface, - css::lang::XComponent* _pObject) + css::lang::XComponent* _pObject) throw () { if (osl_atomic_decrement( &_refCount ) == 0) { @@ -1982,7 +1982,13 @@ void release(oslInterlockedCount& _refCount, } // First dispose - _pObject->dispose(); + try { + _pObject->dispose(); + } catch (css::uno::RuntimeException & e) { + SAL_WARN( + "connectivity.commontools", + "Caught exception during dispose, " << e.Message); + } // only the alive ref holds the object OSL_ASSERT( _refCount == 1 ); |