diff options
author | Christopher Faylor <me@cgf.cx> | 2006-05-25 05:40:51 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2006-05-25 05:40:51 +0000 |
commit | 3cd94e0c0ae9fce0bc8554c39af34c104778ff42 (patch) | |
tree | c8e1a08c0d546133a04dc5411fdbc2a683e88c5b /winsup/cygwin/pipe.cc | |
parent | 38229bcdcf45221857163f39d865d1d5d113a9b7 (diff) | |
download | cygnal-3cd94e0c0ae9fce0bc8554c39af34c104778ff42.tar.gz cygnal-3cd94e0c0ae9fce0bc8554c39af34c104778ff42.tar.bz2 cygnal-3cd94e0c0ae9fce0bc8554c39af34c104778ff42.zip |
* debug.h (ModifyHandle): Define new macro.
(modify_handle): Declare new function.
* debug.cc (modify_handle): Define new function.
* fhandler.h (fhandler_base::fork_fixup): Change return value from void to
bool.
* fhandler.cc (fhandler_base::fork_fixup): Return true if fork fixup has been
done.
* pipe.cc (fhandler_pipe::set_close_on_exec): Set inheritance of protected
handle via ModifyHandle if DEBUGGING.
(fhandler_pipe::fixup_after_fork): Protect guard handle if fork fixup has been
done.
Diffstat (limited to 'winsup/cygwin/pipe.cc')
-rw-r--r-- | winsup/cygwin/pipe.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index b6bd0cf0c..183bd18de 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -155,7 +155,10 @@ fhandler_pipe::set_close_on_exec (bool val) { fhandler_base::set_close_on_exec (val); if (guard) - set_no_inheritance (guard, val); + { + set_no_inheritance (guard, val); + ModifyHandle (guard, !val); + } if (writepipe_exists) set_no_inheritance (writepipe_exists, val); } @@ -250,8 +253,8 @@ void fhandler_pipe::fixup_after_fork (HANDLE parent) { fhandler_base::fixup_after_fork (parent); - if (guard) - fork_fixup (parent, guard, "guard"); + if (guard && fork_fixup (parent, guard, "guard")) + ProtectHandle (guard); if (writepipe_exists) fork_fixup (parent, writepipe_exists, "writepipe_exists"); fixup_in_child (); |