do not access the iterator after erasing it
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 02 Aug 2007 08:55:56 +0200
changeset 1017 6f0bebab95c3
parent 1016 58a56b52a08b
child 1018 99476ef5580a
do not access the iterator after erasing it
src/simulator/scheduler-map.cc
--- a/src/simulator/scheduler-map.cc	Wed Aug 01 21:35:34 2007 +0100
+++ b/src/simulator/scheduler-map.cc	Thu Aug 02 08:55:56 2007 +0200
@@ -118,9 +118,10 @@
 EventId
 SchedulerMap::RemoveNext (void)
 {
-  EventMapCI i = m_list.begin ();
-  m_list.erase (m_list.begin ());
-  return EventId (Ptr<EventImpl> (i->second, false), i->first.m_ts, i->first.m_uid);
+  EventMapI i = m_list.begin ();
+  std::pair<Scheduler::EventKey, EventImpl*> next = *i;
+  m_list.erase (i);
+  return EventId (Ptr<EventImpl> (next.second, false), next.first.m_ts, next.first.m_uid);
 }
 
 bool