fix(completion): avoid freeing uninitialized value (#33459)

(cherry picked from commit 51caf0a3af)
This commit is contained in:
zeertzjq
2025-04-14 13:02:58 +08:00
committed by github-actions[bot]
parent 526444c4ff
commit e4007551c4
2 changed files with 14 additions and 1 deletions

View File

@ -3242,7 +3242,7 @@ static int ExpandUserList(expand_T *xp, char ***matches, int *numMatches)
static int ExpandUserLua(expand_T *xp, int *num_file, char ***file)
{
typval_T rettv;
typval_T rettv = TV_INITIAL_VALUE;
nlua_call_user_expand_func(xp, &rettv);
if (rettv.v_type != VAR_LIST) {
tv_clear(&rettv);

View File

@ -681,6 +681,19 @@ describe('nvim_create_user_command', function()
eq('Test bbb', fn.getcmdline())
end)
it('no crash when Lua complete function errors #33447', function()
exec_lua([[
vim.api.nvim_create_user_command('Test','', {
nargs = 1,
complete = function() error() end
})
]])
feed(':Test <Tab>')
eq('E5108: Error executing Lua function: [NULL]', api.nvim_get_vvar('errmsg'))
eq('Test ', fn.getcmdline())
assert_alive()
end)
it('does not allow invalid command names', function()
eq(
"Invalid command name (must start with uppercase): 'test'",