* 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:
Christopher Faylor
2004-01-03 18:15:03 +00:00
parent d84514bd0f
commit e80cbe3e52
10 changed files with 45 additions and 29 deletions

View File

@ -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;
}