[pypy-commit] pypy stdlib-2.7.8: Update select.poll register/modify for 3.3 tests
armooo
noreply at buildbot.pypy.org
Sat Aug 23 01:55:50 CEST 2014
Author: Jason Michalski <armooo at armooo.net>
Branch: stdlib-2.7.8
Changeset: r72978:529ffff25441
Date: 2014-08-20 21:53 -0700
http://bitbucket.org/pypy/pypy/changeset/529ffff25441/
Log: Update select.poll register/modify for 3.3 tests
In python 3.3 select.poll register and modify raise an OverflowError
when events is a negative value. (grafted from
f5e910c8882588ec4780bda3c6419e7cf6eda9ae)
diff --git a/pypy/module/select/interp_select.py b/pypy/module/select/interp_select.py
--- a/pypy/module/select/interp_select.py
+++ b/pypy/module/select/interp_select.py
@@ -31,11 +31,21 @@
@unwrap_spec(events="c_short")
def register(self, space, w_fd, events=defaultevents):
+ if events < 0:
+ raise OperationError(
+ space.w_OverflowError,
+ space.wrap("Python int too large for C unsigned short"),
+ )
fd = space.c_filedescriptor_w(w_fd)
self.fddict[fd] = events
@unwrap_spec(events=int)
def modify(self, space, w_fd, events):
+ if events < 0:
+ raise OperationError(
+ space.w_OverflowError,
+ space.wrap("Python int too large for C unsigned short"),
+ )
fd = space.c_filedescriptor_w(w_fd)
if fd not in self.fddict:
raise wrap_oserror(space, OSError(errno.ENOENT, "poll.modify"),
diff --git a/pypy/module/test_lib_pypy/test_poll.py b/pypy/module/test_lib_pypy/test_poll.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/test_lib_pypy/test_poll.py
@@ -0,0 +1,14 @@
+class AppTestPoll:
+
+ spaceconfig = dict(usemodules=('select',))
+
+ def test_poll3(self):
+ import select
+ # test int overflow
+ pollster = select.poll()
+ pollster.register(1)
+
+ raises(OverflowError, pollster.register, 0, -1)
+ raises(OverflowError, pollster.register, 0, 1 << 64)
+ raises(OverflowError, pollster.modify, 1, -1)
+ raises(OverflowError, pollster.modify, 1, 1 << 64)
More information about the pypy-commit
mailing list