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

patch 7.4.2225

Problem:    Crash when placing a sign in a deleted buffer.
Solution:   Check for missing buffer name. (Dominique Pelle). Add a test.
This commit is contained in:
Bram Moolenaar
2016-08-17 22:29:09 +02:00
parent af9c4c9b57
commit bfd096d020
3 changed files with 19 additions and 0 deletions

View File

@@ -7861,6 +7861,11 @@ ex_sign(exarg_T *eap)
{ /* ... not currently in a window */ { /* ... not currently in a window */
char_u *cmd; char_u *cmd;
if (buf->b_fname == NULL)
{
EMSG(_("E934: Cannot jump to a buffer that does not have a name"));
return;
}
cmd = alloc((unsigned)STRLEN(buf->b_fname) + 25); cmd = alloc((unsigned)STRLEN(buf->b_fname) + 25);
if (cmd == NULL) if (cmd == NULL)
return; return;

View File

@@ -181,3 +181,15 @@ func Test_sign_invalid_commands()
call assert_fails('sign place 1 buffer=', 'E158:') call assert_fails('sign place 1 buffer=', 'E158:')
call assert_fails('sign define Sign2 text=', 'E239:') call assert_fails('sign define Sign2 text=', 'E239:')
endfunc endfunc
func Test_sign_delete_buffer()
new
sign define Sign text=x
let bufnr = bufnr('%')
new
exe 'bd ' . bufnr
exe 'sign place 61 line=3 name=Sign buffer=' . bufnr
call assert_fails('sign jump 61 buffer=' . bufnr, 'E934:')
sign unplace 61
sign undefine Sign
endfunc

View File

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