From 80684a418b500cbd6a6f1f4e160ab0ff1d261c6e Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 15 Mar 2026 06:26:21 +0800 Subject: [PATCH] vim-patch:9.2.0159: Crash when reading quickfix line Problem: Crash when reading quickfix line (Kaiyu Xie) Solution: Make sure line is terminated by NUL closes: vim/vim#19667 Supported by AI https://github.com/vim/vim/commit/8d13b8244a41d2457bc5049bdd0bb0238a754ede Co-authored-by: Christian Brabandt --- src/nvim/quickfix.c | 1 + test/old/testdir/test_quickfix.vim | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 75dae44478..f7eae6f825 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -815,6 +815,7 @@ retry: // Copy the read part of the line, excluding null-terminator memcpy(state->growbuf, IObuff, IOSIZE - 1); size_t growbuflen = state->linelen; + state->growbuf[growbuflen] = NUL; while (true) { errno = 0; diff --git a/test/old/testdir/test_quickfix.vim b/test/old/testdir/test_quickfix.vim index 7470e7d8ff..4eddec1e30 100644 --- a/test/old/testdir/test_quickfix.vim +++ b/test/old/testdir/test_quickfix.vim @@ -7014,4 +7014,19 @@ func Test_quickfixtextfunc_wipes_buffer() bw endfunc +func Test_quickfix_longline_noeol() + CheckRunVimInTerminal + let qf = 'Xquickfix' + let args = $"-q {qf}" + let after =<< trim [CODE] + call writefile(['okay'], "XDONE") + qall! + [CODE] + defer delete("XDONE") + call writefile([repeat('A', 1024)], qf, 'bD') + call RunVim([], after, args) + call WaitForAssert({-> assert_true(filereadable("XDONE"))}) + call assert_equal(['okay'], readfile("XDONE")) +endfunc + " vim: shiftwidth=2 sts=2 expandtab