summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dtable.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/dtable.cc')
-rw-r--r--winsup/cygwin/dtable.cc11
1 files changed, 4 insertions, 7 deletions
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index 3cf52c087..4ae3871c1 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -271,8 +271,8 @@ dtable::build_fhandler (int fd, DWORD dev, const char *name, int unit)
case FH_CONSOLE:
case FH_CONIN:
case FH_CONOUT:
- fh = cnew (fhandler_console) ();
- inc_console_fds ();
+ if ((fh = cnew (fhandler_console) ()))
+ inc_console_fds ();
break;
case FH_PTYM:
fh = cnew (fhandler_pty_master) ();
@@ -295,7 +295,8 @@ dtable::build_fhandler (int fd, DWORD dev, const char *name, int unit)
fh = cnew (fhandler_pipe) ();
break;
case FH_SOCKET:
- fh = cnew (fhandler_socket) ();
+ if ((fh = cnew (fhandler_socket) ()))
+ inc_need_fixup_before ();
break;
case FH_DISK:
fh = cnew (fhandler_disk_file) ();
@@ -401,10 +402,6 @@ dtable::dup2 (int oldfd, int newfd)
_close (newfd);
fds[newfd] = newfh;
- /* Count sockets. */
- if ((fds[newfd]->get_device () & FH_DEVMASK) == FH_SOCKET)
- inc_need_fixup_before ();
-
ReleaseResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "dup");
MALLOC_CHECK;