[PATCH] Cygwin: pty: Fix state mismatch caused in octave gui.

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Cygwin: pty: Fix state mismatch caused in octave gui.

Takashi Yano
- In octave gui, sometimes state mismatch between real pty state
  and state variable occurs. For example, this occurs when 'ls'
  command is executed in octave gui. This patch fixes the issue.
---
 winsup/cygwin/spawn.cc | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 08d52bb28..f7c6dd590 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -947,6 +947,15 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
     {
       FreeConsole ();
       AttachConsole (pid_restore);
+      cygheap_fdenum cfd (false);
+      int fd;
+      while ((fd = cfd.next ()) >= 0)
+ if (cfd->get_major () == DEV_PTYS_MAJOR)
+  {
+    fhandler_pty_slave *ptys =
+      (fhandler_pty_slave *) (fhandler_base *) cfd;
+    ptys->fixup_after_attach (false, fd);
+  }
     }
 
   return (int) res;
--
2.21.0