aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/fhandler/base.cc3
-rw-r--r--winsup/cygwin/local_includes/path.h1
-rw-r--r--winsup/cygwin/release/3.6.53
3 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc
index 64a5f6a..beebd71 100644
--- a/winsup/cygwin/fhandler/base.cc
+++ b/winsup/cygwin/fhandler/base.cc
@@ -474,6 +474,9 @@ fhandler_base::open_with_arch (int flags, mode_t mode)
if (!open_setup (flags))
api_fatal ("open_setup failed, %E");
}
+ /* For pty and console, PATH_OPEN flag has not been set in open().
+ So set it here unconditionally. */
+ pc.set_isopen ();
close_on_exec (flags & O_CLOEXEC);
/* A unique ID is necessary to recognize fhandler entries which are
diff --git a/winsup/cygwin/local_includes/path.h b/winsup/cygwin/local_includes/path.h
index 1fd542c..a9ce2c7 100644
--- a/winsup/cygwin/local_includes/path.h
+++ b/winsup/cygwin/local_includes/path.h
@@ -244,6 +244,7 @@ class path_conv
int isopen () const {return path_flags & PATH_OPEN;}
int isctty_capable () const {return path_flags & PATH_CTTY;}
int follow_fd_symlink () const {return path_flags & PATH_RESOLVE_PROCFD;}
+ void set_isopen () {path_flags |= PATH_OPEN;}
void set_cygexec (bool isset)
{
if (isset)
diff --git a/winsup/cygwin/release/3.6.5 b/winsup/cygwin/release/3.6.5
index 97bb397..f14fbe6 100644
--- a/winsup/cygwin/release/3.6.5
+++ b/winsup/cygwin/release/3.6.5
@@ -19,3 +19,6 @@ Fixes:
- Instead, fix internal conversion of filenames in case of an invalid
4 byte UTF-8 sequence.
Addresses: https://cygwin.com/pipermail/cygwin/2025-June/258358.html
+
+- Make process_fd correctly handle pty and console.
+ Addresses: https://cygwin.com/pipermail/cygwin/2025-May/258167.html