* cygheap.cc (init_cygheap::manage_console_count): Delete.
* cygheap.h (init_cygheap::manage_console_count): Ditto. (init_cygheap::console_count): Ditto. * fhandler.h (fhandler_console::has_a): Ditto. (fhandler_console::free_console): Declare new function. * fhandler_console.cc (fhandler_console::free_console): Define new function. (fhandler_console::open_setup): Delete call to manage_console_count. (fhandler_console::close): Ditto. Replace with call to free_console(). * fhandler_tty.cc (fhandler_pty_slave::open): Delete call to manage_console_count. (fhandler_pty_slave::cleanup): Ditto. (fhandler_pty_slave::close): Call fhandler_console::free_console() if this is our controlling tty. * pinfo.cc (_pinfo::set_ctty): Skip function if tty in question == our ctty. Delete call to manage_console_count. * syscalls.cc (close_all_files): Avoid locking and avoid setting errno when iterating over fds.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/* fhandler_console.cc
|
||||
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||
2006, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
||||
2006, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
@@ -827,7 +827,6 @@ fhandler_console::open (int flags, mode_t)
|
||||
void
|
||||
fhandler_console::open_setup (int flags)
|
||||
{
|
||||
cygheap->manage_console_count ("fhandler_console::open", 1);
|
||||
set_flags ((flags & ~O_TEXT) | O_BINARY);
|
||||
myself->set_ctty (this, flags);
|
||||
}
|
||||
@@ -838,7 +837,7 @@ fhandler_console::close ()
|
||||
CloseHandle (get_io_handle ());
|
||||
CloseHandle (get_output_handle ());
|
||||
if (!have_execed)
|
||||
cygheap->manage_console_count ("fhandler_console::close", -1);
|
||||
free_console ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2348,6 +2347,14 @@ fhandler_console::create_invisible_console_workaround ()
|
||||
return invisible_console = true;
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_console::free_console ()
|
||||
{
|
||||
BOOL res = FreeConsole ();
|
||||
debug_printf ("freed console, res %d", res);
|
||||
init_console_handler (false);
|
||||
}
|
||||
|
||||
bool
|
||||
fhandler_console::need_invisible ()
|
||||
{
|
||||
|
Reference in New Issue
Block a user