From 544bde3accf33370d1ac1b3306abb23bdbb2d01a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 17 Dec 2025 06:46:22 +0800 Subject: [PATCH] vim-patch:9.1.1987: assert_equal() prepends unnecessary ':' when typed Problem: assert_equal() prepends unnecessary ':' when typed (after 9.0.1758). Solution: Don't change a NULL stacktrace to an empty string (zeertzjq). closes: vim/vim#18936 https://github.com/vim/vim/commit/c4b3aefd0d5f81693e7098f224d3e4bfe24a7aa7 --- src/nvim/runtime.c | 5 ++++- test/old/testdir/test_assert.vim | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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'))