diff --git a/include/opendht/scheduler.h b/include/opendht/scheduler.h
index a5cb6ca74fc3d3358d1569275d03f24a6ca16e79..4e13053c53971cf7940b4845e1dbeb2515707690 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();
     }