Commit b3caf388 authored by Alexey Izbyshev's avatar Alexey Izbyshev Committed by Benjamin Peterson

closes bpo-32859: Don't retry dup3() if it is not available at runtime (GH-5708)

os.dup2() tests for dup3() system call availability at runtime,
but doesn't remember the result across calls, repeating
the test on each call with inheritable=False.

Since the caller of os.dup2() is expected to hold the GIL,
fix this by making the variable holding the test result static.
parent 6240917b
In ``os.dup2``, don't check every call whether the ``dup3`` syscall exists
or not.
......@@ -8016,7 +8016,7 @@ os_dup2_impl(PyObject *module, int fd, int fd2, int inheritable)
#if defined(HAVE_DUP3) && \
!(defined(HAVE_FCNTL_H) && defined(F_DUP2FD_CLOEXEC))
/* dup3() is available on Linux 2.6.27+ and glibc 2.9 */
int dup3_works = -1;
static int dup3_works = -1;
#endif
if (fd < 0 || fd2 < 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment