diff options
author | Christopher Faylor <me@cgf.cx> | 2004-01-03 18:15:03 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2004-01-03 18:15:03 +0000 |
commit | e80cbe3e52decfeb93fb121d624c2bf5cd42abf3 (patch) | |
tree | c55243b2c5a9b594f2dde7ffab0ceac747b52a7b /winsup/cygwin/dtable.cc | |
parent | d84514bd0fa6780a30d28e3aa05f956d4c58ae30 (diff) | |
download | cygnal-e80cbe3e52decfeb93fb121d624c2bf5cd42abf3.tar.gz cygnal-e80cbe3e52decfeb93fb121d624c2bf5cd42abf3.tar.bz2 cygnal-e80cbe3e52decfeb93fb121d624c2bf5cd42abf3.zip |
* 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.
Diffstat (limited to 'winsup/cygwin/dtable.cc')
-rw-r--r-- | winsup/cygwin/dtable.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index e5bb80218..141e17382 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -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; } |