diff options
author | Benjamin Peterson <benjamin@python.org> | 2010-04-06 21:50:00 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2010-04-06 21:50:00 (GMT) |
commit | 3a1dfa21c297a263823033a45e3739d201dfddcf (patch) | |
tree | 4d6526d135f9809f4257937c2d04a68cf005b929 | |
parent | 22c62dd345da5668a8adc86196569ce5df5d2831 (diff) | |
download | cpython-3a1dfa21c297a263823033a45e3739d201dfddcf.zip cpython-3a1dfa21c297a263823033a45e3739d201dfddcf.tar.gz cpython-3a1dfa21c297a263823033a45e3739d201dfddcf.tar.bz2 |
remove a optimization that resulted in unexpected behavior #8929
-rw-r--r-- | Lib/test/test_select.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/selectmodule.c | 8 |
3 files changed, 10 insertions, 8 deletions
diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index fd7c8d0..647d71e 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -21,6 +21,13 @@ class SelectTestCase(unittest.TestCase): self.assertRaises(TypeError, select.select, [self.Almost()], [], []) self.assertRaises(TypeError, select.select, [], [], [], "not a number") + def test_returned_list_identity(self): + # See issue #8329 + r, w, x = select.select([], [], [], 1) + self.assertIsNot(r, w) + self.assertIsNot(r, x) + self.assertIsNot(w, x) + def test_select(self): cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' p = os.popen(cmd, 'r') @@ -12,6 +12,9 @@ What's New in Python 2.7 beta 1? Core and Builtins ----------------- +- Issue #8329: Don't return the same lists from select.select when no fds are + changed. + - Issue #8259: 1L << (2**31) no longer produces an 'outrageous shift error' on 64-bit machines. The shift count for either left or right shift is permitted to be up to sys.maxsize. diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index aae08d5..5f862d7 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -287,14 +287,6 @@ select_select(PyObject *self, PyObject *args) PyErr_SetFromErrno(SelectError); } #endif - else if (n == 0) { - /* optimization */ - ifdlist = PyList_New(0); - if (ifdlist) { - ret = PyTuple_Pack(3, ifdlist, ifdlist, ifdlist); - Py_DECREF(ifdlist); - } - } else { /* any of these three calls can raise an exception. it's more convenient to test for this after all three calls... but |