[PATCH] Cygwin: pty: Fix write data handling in pcon_start phase

Takashi Yano takashi.yano@nifty.ne.jp
Wed Mar 25 13:08:32 GMT 2026


If the 'for' loop in pcon_start handling in master write() does not
break, 'ptr' and 'len' loose the chance to fixup the value. In this
case, all data in 'ptr' are processed, so the 'len' should be 0.
1 byte is consistently consumed in each iteration in the 'for' loop,
so this patch fixups 'ptr' and 'len' in every iterations instead of
fixing-up at break.

Fixes: 9d7440036580 ("Cygwin: pty: Fix handling of data after CSI6n response")
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
Reviewed-by:
---
 winsup/cygwin/fhandler/pty.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc
index 098c72f72..8e6fb9c23 100644
--- a/winsup/cygwin/fhandler/pty.cc
+++ b/winsup/cygwin/fhandler/pty.cc
@@ -2257,6 +2257,8 @@ fhandler_pty_master::write (const void *ptr, size_t len)
 	    }
 	  else
 	    line_edit (p + i, 1, ti, &ret);
+	  len = orig_len - i - 1;
+	  ptr = p + i + 1;
 	  if (state == 1 && p[i] == 'R')
 	    state = 2;
 	  if (state == 2)
@@ -2266,8 +2268,6 @@ fhandler_pty_master::write (const void *ptr, size_t len)
 		 the response sequence should not be written. */
 	      if (!get_ttyp ()->req_xfer_input)
 		WriteFile (to_slave_nat, wpbuf, ixput, &n, NULL);
-	      len = orig_len - i - 1;
-	      ptr = p + i + 1;
 	      ixput = 0;
 	      state = 0;
 	      get_ttyp ()->req_xfer_input = false;
-- 
2.51.0



More information about the Cygwin-patches mailing list