Merge pull request #14455 from Sh3Rm4n/fix_get_str_line

[RDY] Fix get str line
This commit is contained in:
James McCoy 2021-05-02 16:47:36 -04:00 committed by GitHub
commit a0da4c3a49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 14 deletions

View File

@ -2719,16 +2719,13 @@ static char_u *get_str_line(int c, void *cookie, int indent, bool do_concat)
while (!(p->buf[i] == '\n' || p->buf[i] == '\0')) {
i++;
}
char buf[2046];
char *dst;
dst = xstpncpy(buf, (char *)p->buf + p->offset, i - p->offset);
if ((uint32_t)(dst - buf) != i - p->offset) {
smsg(_(":source error parsing command %s"), p->buf);
return NULL;
}
buf[i - p->offset] = '\0';
size_t line_length = i - p->offset;
garray_T ga;
ga_init(&ga, (int)sizeof(char_u), (int)line_length);
ga_concat_len(&ga, (char *)p->buf + p->offset, line_length);
ga_append(&ga, '\0');
p->offset = i + 1;
return (char_u *)xstrdup(buf);
return ga.ga_data;
}
static int source_using_linegetter(void *cookie,

View File

@ -2265,12 +2265,14 @@ void msg_scroll_up(bool may_throttle)
/// per screen update.
///
/// NB: The bookkeeping is quite messy, and rests on a bunch of poorly
/// documented assumtions. For instance that the message area always grows while
/// being throttled, messages are only being output on the last line etc.
/// documented assumptions. For instance that the message area always grows
/// while being throttled, messages are only being output on the last line
/// etc.
///
/// Probably message scrollback storage should reimplented as a file_buffer, and
/// message scrolling in TUI be reimplemented as a modal floating window. Then
/// we get throttling "for free" using standard redraw_later code paths.
/// Probably message scrollback storage should be reimplemented as a
/// file_buffer, and message scrolling in TUI be reimplemented as a modal
/// floating window. Then we get throttling "for free" using standard
/// redraw_later code paths.
void msg_scroll_flush(void)
{
if (msg_grid.throttled) {