[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