chart2/source/controller/main/CommandDispatch.cxx |   42 ++++++++--------------
 chart2/source/controller/main/CommandDispatch.hxx |    2 -
 2 files changed, 18 insertions(+), 26 deletions(-)

New commits:
commit 91c5e7a924830dbefeaedd4e342f6f2d69e1b1ea
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Thu Sep 1 19:08:37 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Sep 2 09:01:50 2022 +0200

    no need to use unique_ptr for this map in chart::CommandDispatch
    
    map is already a node based data structure, so the values will stay
    in the same place in memory
    
    Change-Id: I255d99cd2014f33524480e218d2d9cd5ca812375
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139235
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/source/controller/main/CommandDispatch.cxx 
b/chart2/source/controller/main/CommandDispatch.cxx
index f06c877ee525..c7e4f622c522 100644
--- a/chart2/source/controller/main/CommandDispatch.cxx
+++ b/chart2/source/controller/main/CommandDispatch.cxx
@@ -48,13 +48,7 @@ void SAL_CALL CommandDispatch::disposing()
 {
     Reference< uno::XInterface > xEventSource(static_cast< cppu::OWeakObject* 
>( this ));
     for( auto& rElement : m_aListeners )
-    {
-        if( rElement.second )
-        {
-            rElement.second->disposeAndClear( xEventSource );
-            rElement.second.reset();
-        }
-    }
+        rElement.second.disposeAndClear( xEventSource );
     m_aListeners.clear();
 }
 
@@ -67,13 +61,14 @@ void SAL_CALL CommandDispatch::addStatusListener( const 
Reference< frame::XStatu
     tListenerMap::iterator aIt( m_aListeners.find( URL.Complete ));
     if( aIt == m_aListeners.end())
     {
-        aIt = m_aListeners.insert(
-            m_aListeners.begin(),
-            tListenerMap::value_type( URL.Complete, new 
::comphelper::OInterfaceContainerHelper3<css::frame::XStatusListener>( m_aMutex 
)));
+        aIt = m_aListeners.emplace(
+                    std::piecewise_construct,
+                    std::forward_as_tuple(URL.Complete),
+                    std::forward_as_tuple( m_aMutex )).first;
     }
-    OSL_ASSERT( aIt != m_aListeners.end());
+    assert( aIt != m_aListeners.end());
 
-    aIt->second->addInterface( Control );
+    aIt->second.addInterface( Control );
     fireStatusEvent( URL.Complete, Control );
 }
 
@@ -81,7 +76,7 @@ void SAL_CALL CommandDispatch::removeStatusListener( const 
Reference< frame::XSt
 {
     tListenerMap::iterator aIt( m_aListeners.find( URL.Complete ));
     if( aIt != m_aListeners.end())
-        (*aIt).second->removeInterface( Control );
+        (*aIt).second.removeInterface( Control );
 }
 
 // ____ XModifyListener ____
@@ -132,20 +127,17 @@ void CommandDispatch::fireStatusEventForURL(
         tListenerMap::iterator aIt( m_aListeners.find( aURL.Complete ));
         if( aIt != m_aListeners.end())
         {
-            if( aIt->second )
-            {
-                ::comphelper::OInterfaceIteratorHelper3 aIntfIt( 
*((*aIt).second) );
+            ::comphelper::OInterfaceIteratorHelper3 aIntfIt( aIt->second );
 
-                while( aIntfIt.hasMoreElements())
+            while( aIntfIt.hasMoreElements())
+            {
+                try
+                {
+                    aIntfIt.next()->statusChanged( aEventToSend );
+                }
+                catch( const uno::Exception & )
                 {
-                    try
-                    {
-                        aIntfIt.next()->statusChanged( aEventToSend );
-                    }
-                    catch( const uno::Exception & )
-                    {
-                        DBG_UNHANDLED_EXCEPTION("chart2");
-                    }
+                    DBG_UNHANDLED_EXCEPTION("chart2");
                 }
             }
         }
diff --git a/chart2/source/controller/main/CommandDispatch.hxx 
b/chart2/source/controller/main/CommandDispatch.hxx
index 16e0b5ab72bc..d156b8d8cf8d 100644
--- a/chart2/source/controller/main/CommandDispatch.hxx
+++ b/chart2/source/controller/main/CommandDispatch.hxx
@@ -121,7 +121,7 @@ private:
     css::uno::Reference< css::uno::XComponentContext > m_xContext;
     css::uno::Reference< css::util::XURLTransformer >  m_xURLTransformer;
 
-    typedef std::map< OUString, 
std::unique_ptr<::comphelper::OInterfaceContainerHelper3<css::frame::XStatusListener>>
 >
+    typedef std::map< OUString, 
::comphelper::OInterfaceContainerHelper3<css::frame::XStatusListener> >
         tListenerMap;
 
     tListenerMap m_aListeners;

Reply via email to