URI: 
       Do not eat ESC character if control string is not properly terminated. - st - simple terminal
  HTML git clone https://git.parazyd.org/st
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 02d2df5790d186f16e0e22becd8107a85f328c2f
   DIR parent c4b79b055df9ef0126f05dd6dbd2bbf935dcb980
  HTML Author: noname <noname@inventati.org>
       Date:   Sat, 26 Apr 2014 00:12:41 +0200
       
       Do not eat ESC character if control string is not properly terminated.
       
       Currently tputc handles the case of too long control string waiting for
       the end of control string.
       
       Another case is when there is ESC character is encountered but is not
       followed by '\\'.  In this case st stops processing control string,
       but ESC character is ignored.
       
       After this patch st processes ESC characters in control strings properly.
       
       Test case:
       printf '\e]0;abc\e[1mBOLD\e[0m'
       
       Also ^[\ is actually processed in the code that handles ST.
       According to ECMA-048 ST stands for STRING TERMINATOR and is used to
       close control strings.
       
       Diffstat:
         M st.c                                |       8 +++-----
       
       1 file changed, 3 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/st.c b/st.c
       @@ -2452,10 +2452,6 @@ tputc(char *c, int len) {
                                        csiparse();
                                        csihandle();
                                }
       -                } else if(term.esc & ESC_STR_END) {
       -                        term.esc = 0;
       -                        if(ascii == '\\')
       -                                strhandle();
                        } else if(term.esc & ESC_ALTCHARSET) {
                                tdeftran(ascii);
                                tselcs();
       @@ -2545,7 +2541,9 @@ tputc(char *c, int len) {
                                        tcursor(CURSOR_LOAD);
                                        term.esc = 0;
                                        break;
       -                        case '\\': /* ST -- Stop */
       +                        case '\\': /* ST -- String Terminator */
       +                                if(term.esc & ESC_STR_END)
       +                                        strhandle();
                                        term.esc = 0;
                                        break;
                                default: