From dee6795eeda1b3931c0379665cc08c349dc3af32 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Tue, 6 Apr 2010 21:59:20 +0000 Subject: [PATCH] Merged revisions 79868 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r79868 | benjamin.peterson | 2010-04-06 16:55:16 -0500 (Tue, 06 Apr 2010) | 13 lines Merged revisions 79866-79867 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r79866 | benjamin.peterson | 2010-04-06 16:37:06 -0500 (Tue, 06 Apr 2010) | 1 line use skip decorator ........ r79867 | benjamin.peterson | 2010-04-06 16:50:00 -0500 (Tue, 06 Apr 2010) | 1 line remove a optimization that resulted in unexpected behavior #8929 ........ ................ --- Lib/test/test_select.py | 13 +++++++++---- Misc/NEWS | 3 +++ Modules/selectmodule.c | 8 -------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index a463868f62..8813c6ed1b 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -4,6 +4,8 @@ import select import os import sys +@unittest.skipIf(sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'), + "can't easily test on this system") class SelectTestCase(unittest.TestCase): class Nope: @@ -19,11 +21,14 @@ 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): - if sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'): - if support.verbose: - print("Can't test select easily on", sys.platform) - return 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') for tout in (0, 1, 2, 4, 8, 16) + (None,)*10: diff --git a/Misc/NEWS b/Misc/NEWS index 6490360a6b..b829138f39 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -15,6 +15,9 @@ Core and Builtins - Issue #8014: Setting a T_UINT or T_PYSSIZET attribute of an object with PyMemberDefs could produce an internal error; raise TypeError instead. +- Issue #8329: Don't return the same lists from select.select when no fds are + changed. + - Raise a TypeError when trying to delete a T_STRING_INPLACE struct member. - Issue #8226: sys.setfilesystemencoding() raises a LookupError if the encoding diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 7d5ea76a66..0fd3c4802c 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -284,14 +284,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 -- 2.40.0