diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2025-01-08 13:16:41 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-08 05:16:41 +0000 |
| commit | 141114c170d6dd9a7457b7822184970fd6ca0a43 (patch) | |
| tree | 5cb601b03eb096b5c300f24f642f6d23c0414346 | |
| parent | 67192760409be55b9522dfa34d3c24aa22883a0d (diff) | |
| download | rneovim-141114c170d6dd9a7457b7822184970fd6ca0a43.tar.gz rneovim-141114c170d6dd9a7457b7822184970fd6ca0a43.tar.bz2 rneovim-141114c170d6dd9a7457b7822184970fd6ca0a43.zip | |
fix(api): crash on invalid buffer to nvim_buf_del_user_command (#31908)
| -rw-r--r-- | src/nvim/api/command.c | 3 | ||||
| -rw-r--r-- | test/functional/api/command_spec.lua | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/nvim/api/command.c b/src/nvim/api/command.c index 7e79133ed4..23e08bd3fe 100644 --- a/src/nvim/api/command.c +++ b/src/nvim/api/command.c @@ -931,6 +931,9 @@ void nvim_buf_del_user_command(Buffer buffer, String name, Error *err) gap = &ucmds; } else { buf_T *buf = find_buffer_by_handle(buffer, err); + if (ERROR_SET(err)) { + return; + } gap = &buf->b_ucmds; } diff --git a/test/functional/api/command_spec.lua b/test/functional/api/command_spec.lua index a16c6a88e3..fabd9be6d6 100644 --- a/test/functional/api/command_spec.lua +++ b/test/functional/api/command_spec.lua @@ -651,6 +651,11 @@ describe('nvim_create_user_command', function() api.nvim_set_current_buf(bufnr) command('Hello') assert_alive() + eq( + 'Invalid buffer id: 1234', + pcall_err(api.nvim_buf_create_user_command, 1234, 'Hello', '', {}) + ) + assert_alive() end) it('can use a Lua complete function', function() @@ -771,5 +776,9 @@ describe('nvim_del_user_command', function() command('Hello') api.nvim_buf_del_user_command(0, 'Hello') matches('Not an editor command: Hello', pcall_err(command, 'Hello')) + eq('Invalid command (not found): Hello', pcall_err(api.nvim_buf_del_user_command, 0, 'Hello')) + eq('Invalid command (not found): Bye', pcall_err(api.nvim_buf_del_user_command, 0, 'Bye')) + eq('Invalid buffer id: 1234', pcall_err(api.nvim_buf_del_user_command, 1234, 'Hello')) + assert_alive() end) end) |