0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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.
This commit is contained in:
Bram Moolenaar 2018-04-07 21:42:56 +02:00
parent 4791015e6f
commit 77557a7ae6
3 changed files with 8 additions and 1 deletions

View File

@ -288,6 +288,11 @@ size_t vterm_input_write(VTerm *vt, const char *bytes, size_t len)
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:

View File

@ -52,7 +52,7 @@ VTerm *vterm_new_with_allocator(int rows, int cols, VTermAllocatorFunctions *fun
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);

View File

@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1674,
/**/
1673,
/**/