diff options
author | Christopher Faylor <me@cgf.cx> | 2011-05-06 20:12:20 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2011-05-06 20:12:20 +0000 |
commit | f4c566233f28f747fce3c21031f6f3d47a0a6643 (patch) | |
tree | 7d159d3990ea04f5dedfcc83343f176129ebd201 | |
parent | b66dba56c5f076c992f9dfc0f8f9dae29d1e9500 (diff) | |
download | cygnal-f4c566233f28f747fce3c21031f6f3d47a0a6643.tar.gz cygnal-f4c566233f28f747fce3c21031f6f3d47a0a6643.tar.bz2 cygnal-f4c566233f28f747fce3c21031f6f3d47a0a6643.zip |
* fhandler.cc (fhandler_base::dup): Avoid duping a handle when an fhandler has
an archetype.
* fhandler_console.cc (fhandler_console::invisible_console): Move to the top.
(fhandler_console::set_close_on_exec): Don't set close-on-exec on handle since
it's an archetype and you don't know how many things could be using it.
-rw-r--r-- | winsup/cygwin/ChangeLog | 10 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.cc | 2 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_console.cc | 7 |
3 files changed, 14 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index d04e8c2ad..952ec86c5 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,15 @@ 2011-05-06 Christopher Faylor <me.cygwin2011@cgf.cx> + * fhandler.cc (fhandler_base::dup): Avoid duping a handle when an + fhandler has an archetype. + * fhandler_console.cc (fhandler_console::invisible_console): Move to + the top. + (fhandler_console::set_close_on_exec): Don't set close-on-exec on + handle since it's an archetype and you don't know how many things could + be using it. + +2011-05-06 Christopher Faylor <me.cygwin2011@cgf.cx> + * fhandler.h (fhandler_dev_dsp): Cosmetic change. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Put back diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 304feed63..f96d537ef 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -1246,7 +1246,7 @@ fhandler_base::dup (fhandler_base *child) debug_printf ("in fhandler_base dup"); HANDLE nh; - if (!nohandle ()) + if (!nohandle () && !archetype) { if (!DuplicateHandle (GetCurrentProcess (), get_handle (), GetCurrentProcess (), &nh, diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 8fe4414cc..55e9b3ee8 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -56,6 +56,8 @@ const unsigned fhandler_console::MAX_WRITE_CHARS = 16384; static console_state NO_COPY *shared_console_info; +bool NO_COPY fhandler_console::invisible_console; + dev_console NO_COPY *fhandler_console::dev_state; static void @@ -2103,8 +2105,7 @@ fhandler_console::igncr_enabled () void fhandler_console::set_close_on_exec (bool val) { - fhandler_base::set_close_on_exec (val); - set_no_inheritance (output_handle, val); + close_on_exec (val); } void __stdcall @@ -2123,8 +2124,6 @@ fhandler_console::fixup_after_fork_exec (bool execing) get_tty_stuff (); } -bool NO_COPY fhandler_console::invisible_console; - // #define WINSTA_ACCESS (WINSTA_READATTRIBUTES | STANDARD_RIGHTS_READ | STANDARD_RIGHTS_WRITE | WINSTA_CREATEDESKTOP | WINSTA_EXITWINDOWS) #define WINSTA_ACCESS WINSTA_ALL_ACCESS |