]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint
authorNeal Norwitz <nnorwitz@gmail.com>
Thu, 3 Nov 2005 05:00:25 +0000 (05:00 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Thu, 3 Nov 2005 05:00:25 +0000 (05:00 +0000)
Need to check return result of PyInt_AsLong()

Will backport.

Lib/test/test_poll.py
Misc/NEWS
Modules/selectmodule.c

index 2ecae6991949e002e42bfadaba7da2c2d2e96a46..f99c37ff9ee0cda14cc573a137bbd9aaeb07020c 100644 (file)
@@ -168,5 +168,25 @@ def test_poll2():
     p.close()
     print 'Poll test 2 complete'
 
+def test_poll3():
+    # test int overflow
+    print 'Running poll test 3'
+    pollster = select.poll()
+    pollster.register(1)
+
+    try:
+        pollster.poll(1L << 64)
+    except OverflowError:
+        pass
+    else:
+        print 'Expected OverflowError with excessive timeout'
+
+    x = 2 + 3
+    if x != 5:
+        print 'Overflow must have occurred'
+    print 'Poll test 3 complete'
+    
+
 test_poll1()
 test_poll2()
+test_poll3()
index 59f165a61e3a9c2840d56ceb300eaff461f84d46..5191c2519b89dcda77a843e860bd20d1cc741f4b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -177,6 +177,8 @@ Core and builtins
 Extension Modules
 -----------------
 
+- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint
+
 - Bug #1344508, Fix UNIX mmap leaking file descriptors
 
 - Patch #1338314, Bug #1336623: fix tarfile so it can extract
index 81c9e3cd98478261f63f6dcd480584cdbecbca66..ed2ea8197c5a934040c2747b6e77d2b99c3d6870 100644 (file)
@@ -470,6 +470,8 @@ poll_poll(pollObject *self, PyObject *args)
                        return NULL;
                timeout = PyInt_AsLong(tout);
                Py_DECREF(tout);
+               if (timeout == -1 && PyErr_Occurred())
+                       return NULL;
        }
 
        /* Ensure the ufd array is up to date */