summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-07-12 15:05:41 +0200
committerStephan Bergmann <sbergman@redhat.com>2016-07-12 15:05:41 +0200
commit9624bde1c36a3c1b86d8d88f97bc729ac4d65853 (patch)
tree571c4cb9eaed69a45bb67b98b9635251adf07dbe /connectivity
parente4b3772ef966fb3db8dfaa55dfc5f5582d61761d (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')
-rw-r--r--connectivity/source/commontools/dbtools.cxx10
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 );