diff options
author | Takashi Yano via Cygwin-patches <cygwin-patches@cygwin.com> | 2020-08-31 21:02:13 +0900 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2020-08-31 16:25:11 +0200 |
commit | 6871c8418d102c8cfc6185757210d5c7f2dd4d46 (patch) | |
tree | 597fbf01b9cb7db38b3f69dcd32785e7564c9cb8 | |
parent | 4e08fe42c9f3fdba63a57a8e3a6d705c4e10f50f (diff) | |
download | newlib-6871c8418d102c8cfc6185757210d5c7f2dd4d46.zip newlib-6871c8418d102c8cfc6185757210d5c7f2dd4d46.tar.gz newlib-6871c8418d102c8cfc6185757210d5c7f2dd4d46.tar.bz2 |
Cygwin: pty: Fix a bug in the code removing set window title sequence.
- Commit 4e08fe42c9f3fdba63a57a8e3a6d705c4e10f50f has a bug which
may cause infinite loop in pty_master_fwd_thread(). This patch
fixes the issue.
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index e4e94f1..8bf39c3 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -2168,15 +2168,12 @@ fhandler_pty_master::pty_master_fwd_thread () /* Remove Set title sequence */ char *p0, *p1; p0 = outbuf; - while ((p0 = (char *) memmem (p0, rlen, "\033]0;", 4))) + while ((p0 = (char *) memmem (p0, rlen, "\033]0;", 4)) + && (p1 = (char *) memchr (p0, '\007', rlen-(p0-outbuf)))) { - p1 = (char *) memchr (p0, '\007', rlen - (p0 - outbuf)); - if (p1) - { - memmove (p0, p1 + 1, rlen - (p1 + 1 - outbuf)); - rlen -= p1 + 1 - p0; - wlen = rlen; - } + memmove (p0, p1 + 1, rlen - (p1 + 1 - outbuf)); + rlen -= p1 + 1 - p0; + wlen = rlen; } } /* Remove CSI > Pm m */ |