Gregory P. Smith added the comment:

Here's my initial fix.

If fcntl(errpipe_write, F_DUPFD, 3) is widely available this could be shrunk a 
bit to avoid the for loop potentially calling dup a few times and tracking the 
wasted fds to close later.

Otherwise if it isn't I'd rather not bother with F_DUPFD as this code takes the 
optimal path when F_DUPFD_CLOEXEC is supported (true on all modern linux 
systems) and should cause no harm beyond a couple extra dup and close syscalls 
otherwise.

Note: Linux pipe2() support appears in kernels a few revisions after 
F_DUPFD_CLOEXEC support so the good behavior when pipe2 exists will be kept in 
this situation as that also means F_DUPFD_CLOEXEC support should exist.  The 
code will work regardless of that (incase someone has a frankenkernel, or other 
OSes choose to implement one but not the other).

----------
Added file: http://bugs.python.org/file27048/issue15798-fix-gps01.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15798>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to