* 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.
This commit is contained in:
@ -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 ();
|
||||
|
Reference in New Issue
Block a user