Author: Tobias Oberstein <tobias.oberst...@gmail.com> Branch: kqueue Changeset: r53202:87f0c2c83a66 Date: 2012-03-04 16:44 +0100 http://bitbucket.org/pypy/pypy/changeset/87f0c2c83a66/
Log: Closely follow the CPy impl.. diff --git a/pypy/module/select/interp_kqueue.py b/pypy/module/select/interp_kqueue.py --- a/pypy/module/select/interp_kqueue.py +++ b/pypy/module/select/interp_kqueue.py @@ -111,8 +111,9 @@ def close(self): if not self.get_closed(): - socketclose(self.kqfd) + kqfd = self.kqfd self.kqfd = -1 + socketclose(kqfd) def check_closed(self, space): if self.get_closed(): @@ -147,19 +148,19 @@ lltype.scoped_alloc(rffi.CArray(kevent), max_events) as eventlist, \ lltype.scoped_alloc(timespec) as timeout: - if space.is_w(w_timeout, space.w_None): - timeout.c_tv_sec = 0 - timeout.c_tv_nsec = 0 - else: + if not space.is_w(w_timeout, space.w_None): _timeout = space.float_w(w_timeout) if _timeout < 0: raise operationerrfmt(space.w_ValueError, "Timeout must be None or >= 0, got %s", str(_timeout) ) sec = int(_timeout) - nsec = int(1e9 * (_timeout - sec) + 0.5) + nsec = int(1e9 * (_timeout - sec)) rffi.setintfield(timeout, 'c_tv_sec', sec) rffi.setintfield(timeout, 'c_tv_nsec', nsec) + ptimeout = timeout + else: + ptimeout = lltype.nullptr(timespec) if not space.is_w(w_changelist, space.w_None): i = 0 @@ -172,13 +173,16 @@ changelist[i].c_data = ev.event.c_data changelist[i].c_udata = ev.event.c_udata i += 1 + pchangelist = changelist + else: + pchangelist = lltype.nullptr(rffi.CArray(kevent)) nfds = syscall_kevent(self.kqfd, - changelist, + pchangelist, changelist_len, eventlist, max_events, - timeout) + ptimeout) if nfds < 0: raise exception_from_errno(space, space.w_IOError) else: _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit