mirror of https://github.com/vim/vim.git
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Problem: Vim9: crash when using invalid heredoc marker. (Dhiraj Mishra) Solution: Check for NULL list. (closes #7027) Fix comment character.
This commit is contained in:
parent
8c7ad3631a
commit
c0e29010f6
|
@ -558,6 +558,7 @@ heredoc_get(exarg_T *eap, char_u *cmd, int script_get)
|
|||
int text_indent_len = 0;
|
||||
char_u *text_indent = NULL;
|
||||
char_u dot[] = ".";
|
||||
int comment_char = in_vim9script() ? '#' : '"';
|
||||
|
||||
if (eap->getline == NULL)
|
||||
{
|
||||
|
@ -585,11 +586,11 @@ heredoc_get(exarg_T *eap, char_u *cmd, int script_get)
|
|||
}
|
||||
|
||||
// The marker is the next word.
|
||||
if (*cmd != NUL && *cmd != '"')
|
||||
if (*cmd != NUL && *cmd != comment_char)
|
||||
{
|
||||
marker = skipwhite(cmd);
|
||||
p = skiptowhite(marker);
|
||||
if (*skipwhite(p) != NUL && *skipwhite(p) != '"')
|
||||
if (*skipwhite(p) != NUL && *skipwhite(p) != comment_char)
|
||||
{
|
||||
semsg(_(e_trailing_arg), p);
|
||||
return NULL;
|
||||
|
|
|
@ -732,4 +732,14 @@ def Test_assign_lambda()
|
|||
CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_heredoc()
|
||||
var lines =<< trim END # comment
|
||||
text
|
||||
END
|
||||
assert_equal(['text'], lines)
|
||||
|
||||
CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:')
|
||||
CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:')
|
||||
enddef
|
||||
|
||||
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
||||
|
|
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
|||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1755,
|
||||
/**/
|
||||
1754,
|
||||
/**/
|
||||
|
|
|
@ -4632,6 +4632,8 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
|
|||
eap->getline = exarg_getline;
|
||||
eap->cookie = cctx;
|
||||
l = heredoc_get(eap, op + 3, FALSE);
|
||||
if (l == NULL)
|
||||
return NULL;
|
||||
|
||||
if (cctx->ctx_skip != SKIP_YES)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue