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