From 4a18c05f87f838cdecc38ea9a274623e69a62285 Mon Sep 17 00:00:00 2001 From: luukvbaal Date: Tue, 14 Apr 2026 14:12:24 +0200 Subject: [PATCH] fix(cmdline): avoid Ex-mode NULL cmdline_block event #39043 Problem: Attempting to emit cmdline_block event with NULL cmdbuff after in Ex-mode. Solution: Don't emit cmdline_block event when cmdbuff is NULL. (cherry picked from commit f0f9620b38e123b3bae419f637612031a89305f8) --- src/nvim/ex_getln.c | 3 ++- test/functional/ui/cmdline_spec.lua | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 5a355ffe1c..5d15a9cde0 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -1011,7 +1011,8 @@ theend: char *p = ccline.cmdbuff; if (ui_has(kUICmdline)) { - if (exmode_active) { + // Emit cmdline_block in Ex mode unless cmdbuff is NULL (happens with #39021). + if (exmode_active && p != NULL) { ui_ext_cmdline_block_append(0, p); } ui_ext_cmdline_hide(s->gotesc); diff --git a/test/functional/ui/cmdline_spec.lua b/test/functional/ui/cmdline_spec.lua index 8809142f2e..5123dcb541 100644 --- a/test/functional/ui/cmdline_spec.lua +++ b/test/functional/ui/cmdline_spec.lua @@ -822,12 +822,14 @@ local function test_cmdline(linegrid) cmdline = { { content = { { '' } }, firstc = ':', pos = 0 } }, cmdline_block = { { { 'echo "foo"' } } }, }) - feed('vis') + -- Shouldn't crash for NULL cmdline_block event after #39021. + feed('vis') screen:expect([[ ^ | {1:~ }|*3 | ]]) + assert_alive() end) it('works with :lua debug.debug()', function()