tdf#128434 free the BasicManager event listener

This gets rid of the last 72 lost bytes I could identify in the
huge valgrind logs to look like its PDF generation related.

Change-Id: Idda3c2c5b7f5ce0211199b86503037b74438ccf2
Reviewed-on: https://gerrit.libreoffice.org/83302
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
(cherry picked from commit 48b23bbfa0271ed327f668933b92d2ae9b99e806)
Reviewed-on: https://gerrit.libreoffice.org/83350
(cherry picked from commit d8cde1cf69bb170da74018e629e1b65830924e0b)
Reviewed-on: https://gerrit.libreoffice.org/83370
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
diff --git a/basic/source/basmgr/basicmanagerrepository.cxx b/basic/source/basmgr/basicmanagerrepository.cxx
index b725f05..9ef667a 100644
--- a/basic/source/basmgr/basicmanagerrepository.cxx
+++ b/basic/source/basmgr/basicmanagerrepository.cxx
@@ -538,12 +538,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 ac3dbe9..c9f6b6f 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 );