diff --git a/src/nvim/runtime.c b/src/nvim/runtime.c index 90f48333b2..9152f132ce 100644 --- a/src/nvim/runtime.c +++ b/src/nvim/runtime.c @@ -229,7 +229,10 @@ char *estack_sfile(estack_arg_T which) } } - ga_append(&ga, NUL); + // Only NUL-terminate when not returning NULL. + if (ga.ga_data != NULL) { + ga_append(&ga, NUL); + } return (char *)ga.ga_data; } diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index fa63af687d..03d3cab771 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -386,6 +386,19 @@ func Test_assert_fails_in_timer() call StopVimInTerminal(buf) endfunc +" Check that a typed assert_equal() doesn't prepend an unnecessary ':'. +func Test_assert_equal_typed() + let after =<< trim END + call feedkeys(":call assert_equal(0, 1)\", 't') + call feedkeys(":call writefile(v:errors, 'Xerrors')\", 't') + call feedkeys(":qa!\", 't') + END + call assert_equal(1, RunVim([], after, '')) + call assert_equal(['Expected 0 but got 1'], readfile('Xerrors')) + + call delete('Xerrors') +endfunc + func Test_assert_beeps() new call assert_equal(0, assert_beeps('normal h'))