[pypy-commit] pypy stdlib-2.7.4-poll-fix: fixed support for select.poll in stdlib 2.7.4
andrewsmedina
noreply at buildbot.pypy.org
Sat Aug 17 00:46:07 CEST 2013
Author: Andrews Medina <andrewsmedina at gmail.com>
Branch: stdlib-2.7.4-poll-fix
Changeset: r66173:1922d4a83a50
Date: 2013-08-14 23:16 -0300
http://bitbucket.org/pypy/pypy/changeset/1922d4a83a50/
Log: fixed support for select.poll in stdlib 2.7.4
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
@@ -22,6 +22,9 @@
@unwrap_spec(events=int)
def register(self, space, w_fd, events=defaultevents):
+ if events > 32767:
+ msg = "signed short integer is greater than maximum"
+ raise OperationError(space.w_OverflowError, space.wrap(msg))
fd = space.c_filedescriptor_w(w_fd)
self.fddict[fd] = events
@@ -55,6 +58,10 @@
raise OperationError(space.w_ValueError,
space.wrap("math range error"))
+ if timeout > 2147483647:
+ msg = "Python int too large to convert to C int"
+ raise OperationError(space.w_OverflowError, space.wrap(msg))
+
try:
retval = rpoll.poll(self.fddict, timeout)
except rpoll.PollError, e:
diff --git a/pypy/module/select/test/test_select.py b/pypy/module/select/test/test_select.py
--- a/pypy/module/select/test/test_select.py
+++ b/pypy/module/select/test/test_select.py
@@ -213,6 +213,20 @@
readend.close()
writeend.close()
+ def test_poll_int_overflow(self):
+ import select
+
+ pollster = select.poll()
+ pollster.register(1)
+
+ raises(OverflowError, pollster.poll, 1L << 64)
+
+ pollster = select.poll()
+ raises(OverflowError, pollster.register, 0, 32768) # SHRT_MAX + 1
+ raises(OverflowError, pollster.register, 0, 65535) # USHRT_MAX + 1
+ raises(OverflowError, pollster.poll, 2147483648) # INT_MAX + 1
+ raises(OverflowError, pollster.poll, 4294967296) # UINT_MAX + 1
+
class AppTestSelectWithPipes(_AppTestSelect):
"Use a pipe to get pairs of file descriptors"
More information about the pypy-commit
mailing list