mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.0.0552: crash when using NUL in buffer that uses :source
Problem: Crash when using NUL in buffer that uses :source. Solution: Don't get a next line when skipping over NL.
This commit is contained in:
@@ -253,7 +253,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
|
|||||||
if (fc == NULL)
|
if (fc == NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
// Shortcut to call a compiled function without overhead.
|
// Shortcut to call a compiled function with minimal overhead.
|
||||||
r = call_def_function(partial->pt_func, argc, argv,
|
r = call_def_function(partial->pt_func, argc, argv,
|
||||||
DEF_USE_PT_ARGV, partial, fc, rettv);
|
DEF_USE_PT_ARGV, partial, fc, rettv);
|
||||||
remove_funccal();
|
remove_funccal();
|
||||||
@@ -2291,7 +2291,7 @@ eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext)
|
|||||||
|
|
||||||
if (next != NULL)
|
if (next != NULL)
|
||||||
{
|
{
|
||||||
*getnext = TRUE;
|
*getnext = *p != NL;
|
||||||
return skipwhite(next);
|
return skipwhite(next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -665,5 +665,22 @@ func Test_source_buffer_long_line()
|
|||||||
call delete('Xtest.vim')
|
call delete('Xtest.vim')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_source_buffer_with_NUL_char()
|
||||||
|
" This was trying to use a line below the buffer.
|
||||||
|
let lines =<< trim END
|
||||||
|
if !exists('g:loaded')
|
||||||
|
let g:loaded = 1
|
||||||
|
source
|
||||||
|
endif
|
||||||
|
END
|
||||||
|
" Can't have a NL in heredoc
|
||||||
|
let lines += ["silent! vim9 echo [0 \<NL> ? 'a' : 'b']"]
|
||||||
|
call writefile(lines, 'XsourceNul', '')
|
||||||
|
edit XsourceNul
|
||||||
|
source
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -699,6 +699,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 */
|
||||||
|
/**/
|
||||||
|
552,
|
||||||
/**/
|
/**/
|
||||||
551,
|
551,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user