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

Stephan Bergmann sbergman at redhat.com
Sun Feb 17 02:14:23 PST 2013


 cppuhelper/source/servicemanager.cxx |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

New commits:
commit 80d81b40a1915eec599fc7004698ff113e5bb47f
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Sun Feb 17 11:13:53 2013 +0100

    cppcheck: Iterator i used after element has been erased
    
    Change-Id: Id8eb6a475dafcaddc98ddc48627fa8090e91cf4f

diff --git a/cppuhelper/source/servicemanager.cxx b/cppuhelper/source/servicemanager.cxx
index dcb7af9..ce4bf46 100644
--- a/cppuhelper/source/servicemanager.cxx
+++ b/cppuhelper/source/servicemanager.cxx
@@ -1567,6 +1567,9 @@ bool cppuhelper::ServiceManager::removeLegacyFactory(
         }
         assert(i->second.get() != 0);
         clear = i->second;
+        if (removeListener) {
+            comp = i->second->component;
+        }
         //TODO: The below leaves data_ in an inconsistent state upon exceptions:
         removeFromImplementationMap(
             &data_.services, i->second->info->services, i->second);
@@ -1576,9 +1579,6 @@ bool cppuhelper::ServiceManager::removeLegacyFactory(
             data_.namedImplementations.erase(i->second->info->name);
         }
         data_.dynamicImplementations.erase(i);
-        if (removeListener) {
-            comp = i->second->component;
-        }
     }
     if (comp.is()) {
         removeEventListenerFromComponent(comp);


More information about the Libreoffice-commits mailing list