bpo-44849: Fix os.set_inheritable() on FreeBSD 14 with O_PATH (GH-27623)
Fix the os.set_inheritable() function on FreeBSD 14 for file descriptor opened with the O_PATH flag: ignore the EBADF error on ioctl(), fallback on the fcntl() implementation.
This commit is contained in:
@@ -1374,10 +1374,11 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
#ifdef O_PATH
|
||||
if (errno == EBADF) {
|
||||
// On Linux, ioctl(FIOCLEX) will fail with EBADF for O_PATH file descriptors
|
||||
// Fall through to the fcntl() path
|
||||
// bpo-44849: On Linux and FreeBSD, ioctl(FIOCLEX) fails with EBADF
|
||||
// on O_PATH file descriptors. Fall through to the fcntl()
|
||||
// implementation.
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user