aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/cygheap.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/cygheap.cc')
-rw-r--r--winsup/cygwin/cygheap.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc
index 122e620..0c555e3 100644
--- a/winsup/cygwin/cygheap.cc
+++ b/winsup/cygwin/cygheap.cc
@@ -93,13 +93,16 @@ cygheap_fixup_in_child (bool execed)
int
init_cygheap::manage_console_count (const char *something, int amount, bool avoid_freeing_console)
{
+ if (console_count == 0 && amount > 0)
+ init_console_handler (true);
console_count += amount;
debug_printf ("%s: console_count %d, amount %d, %s, avoid_freeing_console %d",
something, console_count, amount, myctty (), avoid_freeing_console);
if (!avoid_freeing_console && amount <= 0 && !console_count && myself->ctty == -1)
{
- FreeConsole ();
- debug_printf ("freed console");
+ BOOL res = FreeConsole ();
+ debug_printf ("freed console, res %d", res);
+ init_console_handler (false);
}
return console_count;
}