eMainloop: Prevent invalid read in valgrind
authorbetacentauri <betacentauri@arcor.de>
Sat, 16 May 2015 12:08:25 +0000 (14:08 +0200)
committerErik Slagter <erik@openpli.org>
Sat, 16 May 2015 17:55:54 +0000 (19:55 +0200)
Stop procedure call erase. it++ afterwards accesses deleted data.
So increase it before call stop.

Signed-off-by: Erik Slagter <erik@openpli.org>

lib/base/ebase.cpp

index 8554a79..8721bf0 100644 (file)
@@ -132,8 +132,8 @@ bool eMainloop::isValid(eMainloop *ml)
 eMainloop::~eMainloop()
 {
        existing_loops.remove(this);
-       for (std::map<int, eSocketNotifier*>::iterator it(notifiers.begin());it != notifiers.end();++it)
-               it->second->stop();
+       for (std::map<int, eSocketNotifier*>::iterator it(notifiers.begin());it != notifiers.end();)
+               (it++)->second->stop();
        while(m_timer_list.begin() != m_timer_list.end())
                m_timer_list.begin()->stop();
 }