* cygheap.h (init_cygheap): Play more vfork shell games and move ctty_on_hold
and open_fhs_on_hold (back) here. * dcrt0.cc (_dll_crt0): Just set impure_ptr_ptr here and let later initialization deal with tls. * dtable.cc (dtable::vfork_child_fixup): Move ctty considerations here. (dtable:vfork_parent_restore): And here. * fork.cc (vfork): Reflect change to ctty handling. * perthread.h (vfork_save::fhctty): Eliminate. * cygwin.din: Make more exports NOSIGFE that will never be interrupted by a signal. * init.cc (dll_entry): Set stackptr to NULL to catch problems earlier.
This commit is contained in:
@ -745,8 +745,13 @@ dtable::vfork_parent_restore ()
|
||||
fds = fds_on_hold;
|
||||
fds_on_hold = NULL;
|
||||
cfree (deleteme);
|
||||
|
||||
ReleaseResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "restore");
|
||||
|
||||
cygheap->ctty = cygheap->ctty_on_hold; // revert
|
||||
if (cygheap->ctty)
|
||||
cygheap->ctty->close (); // Undo previous bump of this archetype
|
||||
cygheap->ctty_on_hold = NULL;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -777,6 +782,12 @@ dtable::vfork_child_fixup ()
|
||||
cfree (fds_on_hold);
|
||||
fds_on_hold = NULL;
|
||||
|
||||
if (cygheap->ctty_on_hold)
|
||||
{
|
||||
cygheap->ctty_on_hold->close ();
|
||||
cygheap->ctty_on_hold = NULL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user