[Libreoffice-commits] core.git: dbaccess/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Dec 19 11:01:53 UTC 2018


 dbaccess/source/core/dataaccess/ContentHelper.cxx |   30 ++++++++--------------
 1 file changed, 11 insertions(+), 19 deletions(-)

New commits:
commit ef8de8d202deb92a57b52f4e48a4de77cf6d8b34
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Wed Dec 19 10:53:12 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Dec 19 12:01:29 2018 +0100

    simplify OContentHelper::notifyPropertiesChange
    
    Change-Id: I7b61b39d1057d4dd68887a2a0254592d8bdab33c
    Reviewed-on: https://gerrit.libreoffice.org/65405
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/dbaccess/source/core/dataaccess/ContentHelper.cxx b/dbaccess/source/core/dataaccess/ContentHelper.cxx
index c52d58c64ae6..9e462e97116f 100644
--- a/dbaccess/source/core/dataaccess/ContentHelper.cxx
+++ b/dbaccess/source/core/dataaccess/ContentHelper.cxx
@@ -492,8 +492,7 @@ void OContentHelper::notifyPropertiesChange( const Sequence< PropertyChangeEvent
             }
         }
 
-        typedef Sequence< PropertyChangeEvent > PropertyEventSequence;
-        typedef std::map< XPropertiesChangeListener*, PropertyEventSequence* > PropertiesEventListenerMap;
+        typedef std::map< XPropertiesChangeListener*, Sequence< PropertyChangeEvent > > PropertiesEventListenerMap;
         PropertiesEventListenerMap aListeners;
 
         const PropertyChangeEvent* propertyChangeEvent = evt.getConstArray();
@@ -509,39 +508,32 @@ void OContentHelper::notifyPropertiesChange( const Sequence< PropertyChangeEvent
                 OInterfaceIteratorHelper aIter( *pPropsContainer );
                 while ( aIter.hasMoreElements() )
                 {
-                    PropertyEventSequence* propertyEvents = nullptr;
+                    Sequence< PropertyChangeEvent >* propertyEvents;
 
                     XPropertiesChangeListener* pListener = static_cast< XPropertiesChangeListener * >( aIter.next() );
-                    PropertiesEventListenerMap::const_iterator it = aListeners.find( pListener );
+                    PropertiesEventListenerMap::iterator it = aListeners.find( pListener );
                     if ( it == aListeners.end() )
                     {
                         // Not in map - create and insert new entry.
-                        propertyEvents = new PropertyEventSequence( nCount );
-                        aListeners[ pListener ] = propertyEvents;
+                        auto pair = aListeners.emplace( pListener, Sequence< PropertyChangeEvent >( nCount ));
+                        propertyEvents = &pair.first->second;
                     }
                     else
-                        propertyEvents = (*it).second;
+                        propertyEvents = &(*it).second;
 
-                    if ( propertyEvents )
-                        (*propertyEvents)[n] = rEvent;
+                    (*propertyEvents)[n] = rEvent;
                 }
             }
         }
 
         // Notify listeners.
-        PropertiesEventListenerMap::const_iterator it = aListeners.begin();
-        while ( !aListeners.empty() )
+        for (auto & rPair : aListeners)
         {
-            XPropertiesChangeListener* pListener = (*it).first;
-            PropertyEventSequence* pSeq = (*it).second;
-
-            // Remove current element.
-            it = aListeners.erase( it );
+            XPropertiesChangeListener* pListener = rPair.first;
+            Sequence< PropertyChangeEvent >& rSeq = rPair.second;
 
             // Propagate event.
-            pListener->propertiesChange( *pSeq );
-
-            delete pSeq;
+            pListener->propertiesChange( rSeq );
         }
     }
 }


More information about the Libreoffice-commits mailing list