From c8b345282934affedf2fb4a1e045d12feb7aa850 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 10 Nov 2001 19:46:15 +0000 Subject: * dtable.cc (dtable::build_fhandler): Don't increment console fd count if new operation fails. Increment fork_fixup field here. (dtable::dup2): Don't increment fork_fixup field here. (fdsock): Ditto. --- winsup/cygwin/dtable.cc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'winsup/cygwin/dtable.cc') 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; -- cgit v1.2.3