summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2014-11-03 17:49:06 +0100
committerDavid Tardon <dtardon@redhat.com>2014-11-03 18:50:59 +0100
commitf141ef6bcf76945edbd7353344271e95057d5d3b (patch)
tree6957a7348f874c829ab8ae3b171f551a6c56bec5 /editeng
parentc982e6f50e7ad28b944e617c4be4d2b24d5bd682 (diff)
coverity#982160 unchecked return value
Change-Id: I94117e9f53f1929906b88b2a31d0fcfdf2e40c8d
Diffstat (limited to 'editeng')
-rw-r--r--editeng/source/accessibility/AccessibleEditableTextPara.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index 5a37e12ddfa4..3c2cdb1b57d2 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -1025,7 +1025,19 @@ namespace accessibility
void SAL_CALL AccessibleEditableTextPara::removeAccessibleEventListener( const uno::Reference< XAccessibleEventListener >& xListener ) throw (uno::RuntimeException, std::exception)
{
if( getNotifierClientId() != -1 )
- ::comphelper::AccessibleEventNotifier::removeEventListener( getNotifierClientId(), xListener );
+ {
+ const sal_Int32 nListenerCount = ::comphelper::AccessibleEventNotifier::removeEventListener( getNotifierClientId(), xListener );
+ if ( !nListenerCount )
+ {
+ // no listeners anymore
+ // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+ // and at least to us not firing any events anymore, in case somebody calls
+ // NotifyAccessibleEvent, again
+ ::comphelper::AccessibleEventNotifier::TClientId nId( getNotifierClientId() );
+ mnNotifierClientId = -1;
+ ::comphelper::AccessibleEventNotifier::revokeClient( nId );
+ }
+ }
}
// XAccessibleComponent