neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 51caf0a3af599bc4eacdc4b87092bb20286dbfe8
parent fd76646a95e3035a166a2582fdd7a21dca9ececa
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon, 14 Apr 2025 13:02:58 +0800

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


Diffstat:
Msrc/nvim/cmdexpand.c | 2+-
Mtest/functional/api/command_spec.lua | 13+++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/nvim/cmdexpand.c b/src/nvim/cmdexpand.c @@ -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); diff --git a/test/functional/api/command_spec.lua b/test/functional/api/command_spec.lua @@ -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'",