diff options
Diffstat (limited to 'winsup/cygwin/cygheap.cc')
-rw-r--r-- | winsup/cygwin/cygheap.cc | 7 |
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; } |