0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00

patch 8.2.3006: crash when echoing a value very early

Problem:    Crash when echoing a value very early. (Naruhiko Nishino)
Solution:   Do not use a NUL to truncate the message, make a copy.
            (closes #8388)
This commit is contained in:
Bram Moolenaar 2021-06-15 22:39:11 +02:00
parent f57b43c230
commit a97c36310f
3 changed files with 27 additions and 9 deletions

View File

@ -2751,19 +2751,21 @@ msg_puts_printf(char_u *str, int maxlen)
if (*p != NUL && !(silent_mode && p_verbose == 0))
{
int c = -1;
char_u *tofree = NULL;
if (maxlen > 0 && STRLEN(p) > (size_t)maxlen)
{
c = p[maxlen];
p[maxlen] = 0;
tofree = vim_strnsave(p, (size_t)maxlen);
p = tofree;
}
if (p != NULL)
{
if (info_message)
mch_msg((char *)p);
else
mch_errmsg((char *)p);
vim_free(tofree);
}
if (info_message)
mch_msg((char *)p);
else
mch_errmsg((char *)p);
if (c != -1)
p[maxlen] = c;
}
msg_didout = TRUE; // assume that line is not empty

View File

@ -1301,4 +1301,18 @@ func Test_write_in_vimrc()
call delete('Xvimrc')
endfunc
func Test_echo_true_in_cmd()
let lines =<< trim END
echo v:true
call writefile(['done'], 'Xresult')
END
call writefile(lines, 'Xscript')
if RunVim([], [], '--cmd "source Xscript" --c q')
call assert_equal(['done'], readfile('Xresult'))
endif
call delete('Xscript')
call delete('Xresult')
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

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