[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