Use nanoseconds for timeouts less than 1 second on Mac OS X.

This commit is contained in:
Dominik Picheta
2015-11-01 11:28:11 +00:00
parent 0249bd0e6c
commit 29a40e37d5

View File

@@ -242,7 +242,9 @@ elif defined(macosx) or defined(freebsd) or defined(openbsd) or defined(netbsd):
proc select*(s: var Selector, timeout: int): seq[ReadyInfo] =
result = @[]
var tv = Timespec(tv_sec: (timeout div 1000).Time, tv_nsec: 0)
var tv =
if timeout >= 1000: Timespec(tv_sec: (timeout div 1000).Time, tv_nsec: 0)
else: Timespec(tv_sec: 0.Time, tv_nsec: timeout * 1000000)
let evNum = kevent(s.kqFD, nil, 0, addr s.events[0], 64.cint, addr tv)
if evNum < 0:
let err = osLastError()