# HG changeset patch # User Christian Brabandt # Date 1523130306 -7200 # Node ID caa9825b04cd6a0b68dbe89670f7a4728561d821 # Parent 077a610349256a4e118014ab419b29c3cf44be3e patch 8.0.1674: libvterm can't handle an OSC string split commit https://github.com/vim/vim/commit/77557a7ae66830cb21c79d3a2b48a93b086599b3 Author: Bram Moolenaar Date: Sat Apr 7 21:42:56 2018 +0200 patch 8.0.1674: libvterm can't handle an OSC string split Problem: Libvterm can't handle a long OSC string that is split. Solution: When an incomplete OSC string is received copy it to the parser buffer. Increase the size of the parser buffer to be able to handle longer strings. diff --git a/src/libvterm/src/parser.c b/src/libvterm/src/parser.c --- a/src/libvterm/src/parser.c +++ b/src/libvterm/src/parser.c @@ -288,6 +288,11 @@ size_t vterm_input_write(VTerm *vt, cons done_string(vt, string_start, bytes + pos - string_start); ENTER_NORMAL_STATE(); } + else if (pos + 1 == len) { + /* end of input but OSC string isn't finished yet, copy it to + * vt->parser.strbuffer to continue it later */ + more_string(vt, string_start, bytes + pos + 1 - string_start); + } break; case NORMAL: diff --git a/src/libvterm/src/vterm.c b/src/libvterm/src/vterm.c --- a/src/libvterm/src/vterm.c +++ b/src/libvterm/src/vterm.c @@ -52,7 +52,7 @@ VTerm *vterm_new_with_allocator(int rows vt->parser.callbacks = NULL; vt->parser.cbdata = NULL; - vt->parser.strbuffer_len = 64; + vt->parser.strbuffer_len = 500; /* should be able to hold an OSC string */ vt->parser.strbuffer_cur = 0; vt->parser.strbuffer = vterm_allocator_malloc(vt, vt->parser.strbuffer_len); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -763,6 +763,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1674, +/**/ 1673, /**/ 1672,