mirror of
https://github.com/python/cpython.git
synced 2025-11-03 11:23:31 +00:00
remove a optimization that resulted in unexpected behavior #8929
This commit is contained in:
parent
22c62dd345
commit
3a1dfa21c2
3 changed files with 10 additions and 8 deletions
|
|
@ -21,6 +21,13 @@ class SelectTestCase(unittest.TestCase):
|
||||||
self.assertRaises(TypeError, select.select, [self.Almost()], [], [])
|
self.assertRaises(TypeError, select.select, [self.Almost()], [], [])
|
||||||
self.assertRaises(TypeError, select.select, [], [], [], "not a number")
|
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):
|
def test_select(self):
|
||||||
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
|
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')
|
p = os.popen(cmd, 'r')
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@ What's New in Python 2.7 beta 1?
|
||||||
Core and Builtins
|
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'
|
- 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
|
on 64-bit machines. The shift count for either left or right shift is
|
||||||
permitted to be up to sys.maxsize.
|
permitted to be up to sys.maxsize.
|
||||||
|
|
|
||||||
|
|
@ -287,14 +287,6 @@ select_select(PyObject *self, PyObject *args)
|
||||||
PyErr_SetFromErrno(SelectError);
|
PyErr_SetFromErrno(SelectError);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (n == 0) {
|
|
||||||
/* optimization */
|
|
||||||
ifdlist = PyList_New(0);
|
|
||||||
if (ifdlist) {
|
|
||||||
ret = PyTuple_Pack(3, ifdlist, ifdlist, ifdlist);
|
|
||||||
Py_DECREF(ifdlist);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
/* any of these three calls can raise an exception. it's more
|
/* any of these three calls can raise an exception. it's more
|
||||||
convenient to test for this after all three calls... but
|
convenient to test for this after all three calls... but
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue