From 4aad11f003ede370e2fecdceafc8006055330f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20D=C3=A9saulniers?= <rostydela@gmail.com> Date: Sat, 19 Mar 2016 22:53:07 -0400 Subject: [PATCH] dht: fix Scheduler::run() job calls order When executing a job, the internal jobs map can be changed, therefor successive job calls have to make another call to timers.begin() to get the first job to execute. --- include/opendht/scheduler.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/opendht/scheduler.h b/include/opendht/scheduler.h index a5cb6ca7..4e13053c 100644 --- a/include/opendht/scheduler.h +++ b/include/opendht/scheduler.h @@ -83,8 +83,9 @@ public: */ time_point run() { syncTime(); - for (auto t = timers.begin(); t != timers.end(); ) { - if (t->first > now) + while (not timers.empty()) { + auto timer = timers.begin(); + if (timer->first > now) break; auto& job = timer->second; @@ -92,7 +93,7 @@ public: job->do_(); job->done = true; } - t = timers.erase(t); + timers.erase(timer); } return getNextJobTime(); } -- GitLab