summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--basic/source/basmgr/basicmanagerrepository.cxx6
-rw-r--r--unotools/source/misc/eventlisteneradapter.cxx3
2 files changed, 6 insertions, 3 deletions
diff --git a/basic/source/basmgr/basicmanagerrepository.cxx b/basic/source/basmgr/basicmanagerrepository.cxx
index 9e3aecc249e0..edc73fed8c4a 100644
--- a/basic/source/basmgr/basicmanagerrepository.cxx
+++ b/basic/source/basmgr/basicmanagerrepository.cxx
@@ -537,12 +537,16 @@ namespace basic
OSL_PRECOND( _pos != m_aStore.end(), "ImplRepository::impl_removeFromRepository: invalid position!" );
std::unique_ptr<BasicManager> pManager = std::move(_pos->second);
+ Reference<XModel> xModel(_pos->first, UNO_QUERY);
// *first* remove from map (else Notify won't work properly)
m_aStore.erase( _pos );
- // *then* delete the BasicManager
EndListening( *pManager );
+
+ assert(xModel.is());
+ if (xModel.is())
+ stopComponentListening(xModel);
}
diff --git a/unotools/source/misc/eventlisteneradapter.cxx b/unotools/source/misc/eventlisteneradapter.cxx
index ac3dbe9c615e..c9f6b6f73ee9 100644
--- a/unotools/source/misc/eventlisteneradapter.cxx
+++ b/unotools/source/misc/eventlisteneradapter.cxx
@@ -84,7 +84,6 @@ namespace utl
{
Reference< XEventListener > xDeleteUponLeaving = m_xKeepMeAlive;
m_xKeepMeAlive.clear();
- m_xComponent.clear();
m_pAdapter->_disposing(_rSource);
}
@@ -118,7 +117,7 @@ namespace utl
do
{
rtl::Reference<OEventListenerImpl>& pListenerImpl = *it;
- if ( pListenerImpl->getComponent().get() == _rxComp.get() )
+ if ((pListenerImpl->getComponent().get() == _rxComp.get()) || (pListenerImpl->getComponent() == _rxComp))
{
pListenerImpl->dispose();
it = m_pImpl->aListeners.erase( it );