[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