From 0ad71f88fe5531011c0354f22eeb070b1f729c7d Mon Sep 17 00:00:00 2001 From: Mikael Helbo Kjaer Date: Mon, 1 Nov 2010 12:54:58 +0100 Subject: select now uses Erase-Remove idiom for retired fds Signed-off-by: Mikael Helbo Kjaer --- src/select.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/select.cpp') diff --git a/src/select.cpp b/src/select.cpp index 9d0970a..78d3afd 100644 --- a/src/select.cpp +++ b/src/select.cpp @@ -191,15 +191,8 @@ void zmq::select_t::loop () // Destroy retired event sources. if (retired) { - fd_set_t::iterator it = fds.begin(); - while (it != fds.end()) { - if (it->fd == retired_fd) { - it = fds.erase(it); - } - else { - it++; - } - } + fds.erase (std::remove_if (fds.begin (), fds.end (), + zmq::select_t::is_retired_fd), fds.end ()); retired = false; } } @@ -209,3 +202,9 @@ void zmq::select_t::worker_routine (void *arg_) { ((select_t*) arg_)->loop (); } + +bool zmq::select_t::is_retired_fd (const fd_entry_t &entry) +{ + return (entry.fd == retired_fd); +} + -- cgit v1.2.3