[pypy-commit] pypy py3k: allow the full r_uint range for kevent fds
pjenvey
noreply at buildbot.pypy.org
Tue Apr 2 01:39:56 CEST 2013
Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r62918:65a892b674c1
Date: 2013-04-01 16:39 -0700
http://bitbucket.org/pypy/pypy/changeset/65a892b674c1/
Log: allow the full r_uint range for kevent fds
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
@@ -242,7 +242,10 @@
@unwrap_spec(filter=int, flags='c_uint', fflags='c_uint', data=int, udata=r_uint)
def descr__init__(self, space, w_ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=r_uint(0)):
- ident = r_uint(space.c_filedescriptor_w(w_ident))
+ if space.isinstance_w(w_ident, space.w_int):
+ ident = space.uint_w(w_ident)
+ else:
+ ident = r_uint(space.c_filedescriptor_w(w_ident))
self.event = lltype.malloc(kevent, flavor="raw")
rffi.setintfield(self.event, "c_ident", ident)
diff --git a/pypy/module/select/test/test_kqueue.py b/pypy/module/select/test/test_kqueue.py
--- a/pypy/module/select/test/test_kqueue.py
+++ b/pypy/module/select/test/test_kqueue.py
@@ -74,13 +74,12 @@
assert ev == ev
assert ev != other
- bignum = (sys.maxsize * 2 + 1) & 0xffffffff
- fd = sys.maxsize
- ev = select.kevent(fd, 1, 2, bignum, sys.maxsize, bignum)
- assert ev.ident == fd
+ bignum = sys.maxsize * 2 + 1
+ ev = select.kevent(bignum, 1, 2, 3, sys.maxsize, bignum)
+ assert ev.ident == bignum
assert ev.filter == 1
assert ev.flags == 2
- assert ev.fflags == bignum
+ assert ev.fflags == 3
assert ev.data == sys.maxsize
assert ev.udata == bignum
assert ev == ev
More information about the pypy-commit
mailing list