0
0
mirror of https://github.com/vim/vim.git synced 2025-08-24 19:45:50 -04:00

patch 9.1.1406: crash when importing invalid tuple

Problem:  crash when importing invalid tuple
          (Yang LUO, Yanju Chen)
Solution: set type to VAR_UNKNOWN, so that it isn't freed
          (Yegappan Lakshmanan)

closes: #17362

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Yegappan Lakshmanan 2025-05-23 17:39:44 +02:00 committed by Christian Brabandt
parent 9ff1e598e8
commit 9772025d24
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 16 additions and 0 deletions

View File

@ -1586,6 +1586,17 @@ func Test_recursive_tuple_eval_fails()
\ 'E121: Undefined variable: pat'])
endfunc
" The following used to crash Vim
func Test_import_invalid_tuple()
let lines =<< trim END
imp(",G0}11*f[+\x","#|
END
new
call setline(1, lines)
call assert_fails('source', 'E114: Missing double quote: "#|')
bw!
endfunc
" Test for add() with a tuple
func Test_tuple_add()
let lines =<< trim END

View File

@ -518,6 +518,9 @@ eval_tuple(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error)
// Add the first item to the tuple from "rettv"
if (tuple_append_tv(tuple, rettv) == FAIL)
return FAIL;
// The first item in "rettv" is added to the tuple. Set the rettv
// type to unknown, so that the caller doesn't free it.
rettv->v_type = VAR_UNKNOWN;
}
}

View File

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