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