Construct interrupter first to fix exception safety issue.
diff --git a/asio/include/asio/detail/epoll_reactor.hpp b/asio/include/asio/detail/epoll_reactor.hpp index 96a312d..ee8721b 100644 --- a/asio/include/asio/detail/epoll_reactor.hpp +++ b/asio/include/asio/detail/epoll_reactor.hpp
@@ -204,15 +204,15 @@ // Mutex to protect access to internal data. mutex mutex_; + // The interrupter is used to break a blocking epoll_wait call. + select_interrupter interrupter_; + // The epoll file descriptor. int epoll_fd_; // The timer file descriptor. int timer_fd_; - // The interrupter is used to break a blocking epoll_wait call. - select_interrupter interrupter_; - // The timer queues. timer_queue_set timer_queues_;
diff --git a/asio/include/asio/detail/impl/epoll_reactor.ipp b/asio/include/asio/detail/impl/epoll_reactor.ipp index ef36e31..2fda4a1 100644 --- a/asio/include/asio/detail/impl/epoll_reactor.ipp +++ b/asio/include/asio/detail/impl/epoll_reactor.ipp
@@ -38,9 +38,9 @@ : asio::detail::service_base<epoll_reactor>(io_service), io_service_(use_service<io_service_impl>(io_service)), mutex_(), + interrupter_(), epoll_fd_(do_epoll_create()), timer_fd_(do_timerfd_create()), - interrupter_(), shutdown_(false) { // Add the interrupter's descriptor to epoll.