summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/syscalls.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r--winsup/cygwin/syscalls.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index ebdd7674b..2bcee2c0f 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -65,19 +65,20 @@ close_all_files (void)
cygwin_shared->delqueue.process_queue ();
}
-static BOOL __stdcall
-check_ttys_fds (void)
+BOOL __stdcall
+check_pty_fds (void)
{
int res = FALSE;
- SetResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "close_all_files");
+ SetResourceLock (LOCK_FD_LIST, WRITE_LOCK, "check_pty_fds");
fhandler_base *fh;
for (int i = 0; i < (int) cygheap->fdtab.size; i++)
- if ((fh = cygheap->fdtab[i]) != NULL && fh->get_device() == FH_TTYS)
+ if ((fh = cygheap->fdtab[i]) != NULL &&
+ (fh->get_device() == FH_TTYS || fh->get_device() == FH_PTYM))
{
res = TRUE;
break;
}
- ReleaseResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "close_all_files");
+ ReleaseResourceLock (LOCK_FD_LIST, WRITE_LOCK, "check_pty_fds");
return res;
}
@@ -270,7 +271,7 @@ setsid (void)
{
if (myself->ctty == TTY_CONSOLE &&
!cygheap->fdtab.has_console_fds () &&
- !check_ttys_fds ())
+ !check_pty_fds ())
FreeConsole ();
myself->ctty = -1;
myself->sid = _getpid ();