aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2023-09-14 21:02:30 +0800
committerglepnir <glephunter@gmail.com>2023-09-19 18:05:59 +0800
commitab92575753874f9dee73e722b6fddd8dd49e2f13 (patch)
tree20d6ffa4161efa88a042caa6a97e945ca635ffb4
parenta6e74c1f0a2bbf03f5b99c167b549018f4c8fb0d (diff)
downloadrneovim-ab92575753874f9dee73e722b6fddd8dd49e2f13.tar.gz
rneovim-ab92575753874f9dee73e722b6fddd8dd49e2f13.tar.bz2
rneovim-ab92575753874f9dee73e722b6fddd8dd49e2f13.zip
fix(highlight): winhl receive wrong argument
-rw-r--r--src/nvim/option.c3
-rw-r--r--test/functional/ui/highlight_spec.lua14
2 files changed, 17 insertions, 0 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index ae4e7c1fda..df90fadc97 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -1915,6 +1915,9 @@ bool parse_winhl_opt(win_T *wp)
char *commap = xstrchrnul(hi, ',');
size_t len = (size_t)(commap - hi);
int hl_id = len ? syn_check_group(hi, len) : -1;
+ if (hl_id == 0) {
+ return false;
+ }
int hl_id_link = nlen ? syn_check_group(p, nlen) : 0;
HlAttrs attrs = HLATTRS_INIT;
diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua
index c68f4cf34c..931e1f9985 100644
--- a/test/functional/ui/highlight_spec.lua
+++ b/test/functional/ui/highlight_spec.lua
@@ -8,6 +8,7 @@ local feed_command, eq = helpers.feed_command, helpers.eq
local curbufmeths = helpers.curbufmeths
local funcs = helpers.funcs
local meths = helpers.meths
+local exec_lua = helpers.exec_lua
describe('colorscheme compatibility', function()
before_each(function()
@@ -2641,4 +2642,17 @@ describe('highlight namespaces', function()
|
]]}
end)
+
+ it('winhl does not accept invalid value #24586', function()
+ local res = exec_lua([[
+ local curwin = vim.api.nvim_get_current_win()
+ vim.api.nvim_command("set winhl=Normal:Visual")
+ local _, msg = pcall(vim.api.nvim_command,"set winhl='Normal:Wrong'")
+ return { msg, vim.wo[curwin].winhl }
+ ]])
+ eq({
+ "Vim(set):E5248: Invalid character in group name",
+ "Normal:Visual",
+ },res)
+ end)
end)