diff --git a/asio/include/asio/detail/impl/win_iocp_io_context.ipp b/asio/include/asio/detail/impl/win_iocp_io_context.ipp index 1c7fb28b2d..4e4c0eb55a 100644 --- a/asio/include/asio/detail/impl/win_iocp_io_context.ipp +++ b/asio/include/asio/detail/impl/win_iocp_io_context.ipp @@ -202,9 +202,9 @@ size_t win_iocp_io_context::run(asio::error_code& ec) thread_call_stack::context ctx(this, this_thread); size_t n = 0; + size_t loop_count_limit = (std::numeric_limits::max)(); while (do_one(INFINITE, this_thread, ec)) - if (n != (std::numeric_limits::max)()) - ++n; + n += (n != loop_count_limit); return n; } @@ -251,9 +251,9 @@ size_t win_iocp_io_context::poll(asio::error_code& ec) thread_call_stack::context ctx(this, this_thread); size_t n = 0; + size_t loop_count_limit = (std::numeric_limits::max)(); while (do_one(0, this_thread, ec)) - if (n != (std::numeric_limits::max)()) - ++n; + n += (n != loop_count_limit); return n; }