diff --git a/src/dht.cpp b/src/dht.cpp
index d830a90414bc699f5fb9a484d9fb03f19f12f83a..0b49433d06df18610ee07a3f02d8955b2aa38606 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -670,10 +670,8 @@ struct Dht::Search {
      * @return true if a node has been removed, else false.
      */
     bool removeExpiredNode(time_point now) {
-        auto e = nodes.end();
-        while (e != nodes.cbegin()) {
-            e = std::prev(e);
-            const Node& n = *e->node;
+        for (auto e = nodes.cend(); e != nodes.cbegin();) {
+            const Node& n = *(--e)->node;
             if (n.isExpired() and n.time + Node::NODE_EXPIRE_TIME < now) {
                 //std::cout << "Removing expired node " << n.id << " from IPv" << (af==AF_INET?'4':'6') << " search " << id << std::endl;
                 nodes.erase(e);