From 1e5bcae135c44a5468138db0a53419a0d7d69d10 Mon Sep 17 00:00:00 2001
From: Christopher Faylor <me@cgf.cx>
Date: Tue, 11 Oct 2011 12:39:31 +0000
Subject: [PATCH] * dtable.cc (fh_alloc): Don't parse /dev/tty if ctty is < 0. 
 Reset major/minor from the specific tty to those for /dev/tty.

---
 winsup/cygwin/ChangeLog |  5 +++++
 winsup/cygwin/dtable.cc | 12 ++++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 0d1e1878b..5ae608356 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-11  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+	* dtable.cc (fh_alloc): Don't parse /dev/tty if ctty is < 0.  Reset
+	major/minor from the specific tty to those for /dev/tty.
+
 2011-10-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
 
 	* syscalls.cc (open): Add temporary kludge to avoid assigning the
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index d78013608..a53596fa1 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -541,10 +541,14 @@ fh_alloc (device dev)
 	  break;
 	case FH_TTY:
 	  {
-	    if (iscons_dev (myself->ctty))
-	      fh = cnew (fhandler_console, dev);
-	    else
-	      fh = cnew (fhandler_pty_slave, myself->ctty);
+	    if (myself->ctty > 0)
+	      {
+		if (iscons_dev (myself->ctty))
+		  fh = cnew (fhandler_console, dev);
+		else
+		  fh = cnew (fhandler_pty_slave, myself->ctty);
+		fh->dev () = FH_TTY;
+	      }
 	    break;
 	  }
 	case FH_KMSG: