Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2006-05-25 09:40:51 +0400
committerChristopher Faylor <me@cgf.cx>2006-05-25 09:40:51 +0400
commit3cd94e0c0ae9fce0bc8554c39af34c104778ff42 (patch)
treec8e1a08c0d546133a04dc5411fdbc2a683e88c5b /winsup/cygwin/pipe.cc
parent38229bcdcf45221857163f39d865d1d5d113a9b7 (diff)
* 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.cc9
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 ();