X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/580302f3179ef3f24cf0329755686dfa7100996b..69d1fe06a97619e80872aaae2c4c97ced0540b67:/st.c?ds=inline diff --git a/st.c b/st.c index 00fca99..827ed08 100644 --- a/st.c +++ b/st.c @@ -996,6 +996,8 @@ selnotify(XEvent *e) { ofs = 0; xsev = (XSelectionEvent *)e; + if (xsev->property == None) + return; do { if(XGetWindowProperty(xw.dpy, xw.win, xsev->property, ofs, BUFSIZ/4, False, AnyPropertyType, @@ -2270,12 +2272,23 @@ strhandle(void) { void strparse(void) { + int c; char *p = strescseq.buf; strescseq.narg = 0; strescseq.buf[strescseq.len] = '\0'; - while(p && strescseq.narg < STR_ARG_SIZ) - strescseq.args[strescseq.narg++] = strsep(&p, ";"); + + if(*p == '\0') + return; + + while(strescseq.narg < STR_ARG_SIZ) { + strescseq.args[strescseq.narg++] = p; + while((c = *p) != ';' && c != '\0') + ++p; + if(c == '\0') + return; + *p++ = '\0'; + } } void @@ -2650,7 +2663,7 @@ tputc(char *c, int len) { * character. */ if(term.esc & ESC_STR) { - if(width == 1 && + if(len == 1 && (ascii == '\a' || ascii == 030 || ascii == 032 || ascii == 033 || ISCONTROLC1(unicodep))) {