Skip to content

Commit

Permalink
patch 9.0.0552: crash when using NUL in buffer that uses :source
Browse files Browse the repository at this point in the history
Problem:    Crash when using NUL in buffer that uses :source.
Solution:   Don't get a next line when skipping over NL.
  • Loading branch information
brammool committed Sep 22, 2022
1 parent f87eeb4 commit 6908291
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/eval.c
Expand Up @@ -253,7 +253,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
if (fc == NULL)
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,
DEF_USE_PT_ARGV, partial, fc, rettv);
remove_funccal();
Expand Down Expand Up @@ -2291,7 +2291,7 @@ eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext)

if (next != NULL)
{
*getnext = TRUE;
*getnext = *p != NL;
return skipwhite(next);
}
}
Expand Down
17 changes: 17 additions & 0 deletions src/testdir/test_source.vim
Expand Up @@ -665,5 +665,22 @@ func Test_source_buffer_long_line()
call delete('Xtest.vim')
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
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -699,6 +699,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
552,
/**/
551,
/**/
Expand Down

0 comments on commit 6908291

Please sign in to comment.