aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-01-08 13:16:41 +0800
committerGitHub <noreply@github.com>2025-01-08 05:16:41 +0000
commit141114c170d6dd9a7457b7822184970fd6ca0a43 (patch)
tree5cb601b03eb096b5c300f24f642f6d23c0414346
parent67192760409be55b9522dfa34d3c24aa22883a0d (diff)
downloadrneovim-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.c3
-rw-r--r--test/functional/api/command_spec.lua9
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)