# # # patch "netxx/probe_select.cxx" # from [766d53d2275bd18efd1455c05062b9dda15e5f44] # to [d5321e7fd444a65ec5c699f46a480aea20137bd0] # ============================================================ --- netxx/probe_select.cxx 766d53d2275bd18efd1455c05062b9dda15e5f44 +++ netxx/probe_select.cxx d5321e7fd444a65ec5c699f46a480aea20137bd0 @@ -123,13 +123,31 @@ static_cast(pimpl_)->wr_sockets_.clear(); static_cast(pimpl_)->er_sockets_.clear(); } + +struct fdsets +{ + fd_set *rd, *wr, *er; + fdsets() : rd(new fd_set), wr(new fd_set), er(new fd_set) + { + } + ~fdsets() + { + delete rd; + delete wr; + delete er; + } +}; + //#################################################################### Netxx::Probe_impl::probe_type Netxx::Probe_impl::probe (const Timeout &timeout, Probe::ready_type rt) { pimpl *p=static_cast(pimpl_); probe_type return_value; - fd_set rd_fdset, wr_fdset, er_fdset; + fdsets my_fd_sets; + fd_set &rd_fdset(*my_fd_sets.rd), + &wr_fdset(*my_fd_sets.wr), + &er_fdset(*my_fd_sets.er); fd_set *rd_fdptr, *wr_fdptr, *er_fdptr; timeval tmp_timeout; timeval *timeout_ptr;