diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-12-12 00:09:41 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-12-13 19:47:42 +0100 |
commit | 04be39ce96a8f17db150076cee5e87a594fc0505 (patch) | |
tree | 48130025901a26ab076e8220af289b2c68024dc6 /winaccessibility | |
parent | c0046608da2f96f09a7393015b93f92ede6a409b (diff) |
winaccessibility: fix exception handling in AccEventListener
RemoveMeFromBroadcaster() may catch a DisposedException and then not
call NotifyDestroy.
Change-Id: I2b766541c3e6800c88a83aa482de0093714d39c2
(cherry picked from commit 9e351edccf3b9a71bb310bcaefe07821479ff5e5)
Diffstat (limited to 'winaccessibility')
-rw-r--r-- | winaccessibility/source/service/AccEventListener.cxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/winaccessibility/source/service/AccEventListener.cxx b/winaccessibility/source/service/AccEventListener.cxx index 73b043111f69..7874f4706321 100644 --- a/winaccessibility/source/service/AccEventListener.cxx +++ b/winaccessibility/source/service/AccEventListener.cxx @@ -233,14 +233,20 @@ void AccEventListener::RemoveMeFromBroadcaster() { return; } - Reference<XAccessibleEventBroadcaster> const xBroadcaster( - m_xAccessible->getAccessibleContext(), UNO_QUERY); - if (xBroadcaster.is()) + try { - //remove the lister from accessible object - xBroadcaster->removeAccessibleEventListener(this); - pAgent->NotifyDestroy(m_xAccessible.get()); + Reference<XAccessibleEventBroadcaster> const xBroadcaster( + m_xAccessible->getAccessibleContext(), UNO_QUERY); + if (xBroadcaster.is()) + { + //remove the lister from accessible object + xBroadcaster->removeAccessibleEventListener(this); + } } + catch (Exception const&) + { // may throw if it's already disposed - ignore that + } + pAgent->NotifyDestroy(m_xAccessible.get()); m_xAccessible.clear(); // release cyclic reference } catch(...) |