--- libev/ev_select.c 2009/07/10 19:10:19 1.45 +++ libev/ev_select.c 2010/10/15 22:44:42 1.48 @@ -141,8 +141,7 @@ int fd_setsize; EV_RELEASE_CB; - tv.tv_sec = (long)timeout; - tv.tv_usec = (long)((timeout - (ev_tstamp)tv.tv_sec) * 1e6); + EV_TV_SET (tv, timeout); #if EV_SELECT_USE_FD_SET fd_setsize = sizeof (fd_set); @@ -184,7 +183,7 @@ #endif #ifdef _WIN32 - /* select on windows errornously returns EINVAL when no fd sets have been + /* select on windows erroneously returns EINVAL when no fd sets have been * provided (this is documented). what microsoft doesn't tell you that this bug * exists even when the fd sets _are_ provided, so we have to check for this bug * here and emulate by sleeping manually. @@ -282,9 +281,12 @@ #else vec_max = 0; vec_ri = 0; - vec_ri = 0; - vec_wo = 0; + vec_ro = 0; + vec_wi = 0; vec_wo = 0; + #ifdef _WIN32 + vec_eo = 0; + #endif #endif return EVBACKEND_SELECT; @@ -297,6 +299,9 @@ ev_free (vec_ro); ev_free (vec_wi); ev_free (vec_wo); + #ifdef _WIN32 + ev_free (vec_eo); + #endif }