diff options
-rw-r--r-- | Lib/test/test_select.py | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-03-14-09-26-42.bpo-40280.2-k8TV.rst | 1 | ||||
-rw-r--r-- | Modules/selectmodule.c | 7 |
3 files changed, 8 insertions, 2 deletions
diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index cf32cf2..69421fd 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -46,7 +46,7 @@ class SelectTestCase(unittest.TestCase): self.assertIsNot(r, x) self.assertIsNot(w, x) - @unittest.skipUnless(hasattr(os, 'popen'), "need os.popen()") + @support.requires_fork() def test_select(self): code = textwrap.dedent(''' import time diff --git a/Misc/NEWS.d/next/Library/2022-03-14-09-26-42.bpo-40280.2-k8TV.rst b/Misc/NEWS.d/next/Library/2022-03-14-09-26-42.bpo-40280.2-k8TV.rst new file mode 100644 index 0000000..f27c968 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-03-14-09-26-42.bpo-40280.2-k8TV.rst @@ -0,0 +1 @@ +:func:`select.select` now passes ``NULL`` to ``select`` for each empty fdset. diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 1a5a632..5c36eaa 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -330,7 +330,12 @@ select_select_impl(PyObject *module, PyObject *rlist, PyObject *wlist, do { Py_BEGIN_ALLOW_THREADS errno = 0; - n = select(max, &ifdset, &ofdset, &efdset, tvp); + n = select( + max, + imax ? &ifdset : NULL, + omax ? &ofdset : NULL, + emax ? &efdset : NULL, + tvp); Py_END_ALLOW_THREADS if (errno != EINTR) |