[pypy-commit] pypy armooo-py3.3fixes: Update select.poll register/modify for 3.3 tests
armooo
noreply at buildbot.pypy.org
Sat Aug 23 00:06:11 CEST 2014
Author: Jason Michalski <armooo at armooo.net>
Branch: armooo-py3.3fixes
Changeset: r72966:f5e910c88825
Date: 2014-08-20 21:53 -0700
http://bitbucket.org/pypy/pypy/changeset/f5e910c88825/
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.
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
@@ -19,11 +19,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