neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 7e65c44cfbab533b7b96cf643f31e37a7b01e8c4
parent c4fdd3b072adc53206efa6310fdfd197f90c8b96
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat, 28 Feb 2026 09:09:41 +0800

Merge pull request #38101 from zeertzjq/vim-9.2.0074

vim-patch:9.2.{0074,0075}
Diffstat:
Mtest/old/testdir/test_global.vim | 2+-
Mtest/old/testdir/test_taglist.vim | 34++++++++++++++++++++++++++++++++--
2 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/test/old/testdir/test_global.vim b/test/old/testdir/test_global.vim @@ -93,7 +93,7 @@ func Test_global_newline() call setline(1, ["foo\<NL>bar"]) exe "g/foo/s/foo\\\<NL>bar/xyz/" call assert_equal('xyz', getline(1)) - close! + bw! endfunc " Test :g with ? as delimiter. diff --git a/test/old/testdir/test_taglist.vim b/test/old/testdir/test_taglist.vim @@ -302,7 +302,7 @@ func Test_tag_complete_with_overlong_line() inboundGovernor a 2;" kind:⊢ type:forall (muxMode :: MuxMode) socket peerAddr versionNumber m a b. (MonadAsync m, MonadCatch m, MonadEvaluate m, MonadThrow m, MonadThrow (STM m), MonadTime m, MonadTimer m, MonadMask m, Ord peerAddr, HasResponder muxMode ~ True) => Tracer m (RemoteTransitionTrace peerAddr) -> Tracer m (InboundGovernorTrace peerAddr) -> ServerControlChannel muxMode peerAddr ByteString m a b -> DiffTime -> MuxConnectionManager muxMode socket peerAddr versionNumber ByteString m a b -> StrictTVar m InboundGovernorObservableState -> m Void inboundGovernorCounters a 3;" kind:⊢ type:InboundGovernorState muxMode peerAddr m a b -> InboundGovernorCounters END - call writefile(tagslines, 'Xtags') + call writefile(tagslines, 'Xtags', 'D') set tags=Xtags " try with binary search @@ -315,7 +315,37 @@ func Test_tag_complete_with_overlong_line() call assert_equal('"tag inboundGSV inboundGovernor inboundGovernorCounters', @:) set tagbsearch& - call delete('Xtags') + set tags& +endfunc + +" This used to crash Vim +func Test_evil_emacs_tagfile() + CheckFeature emacs_tags + let longline = repeat('a', 515) + call writefile([ + \ "\x0c", + \ longline + \ ], 'Xtags', 'D') + set tags=Xtags + + call assert_fails(':tag a', 'E426:') + + set tags& +endfunc + +" This used to crash Vim due to a heap-buffer-underflow +func Test_emacs_tagfile_underflow() + CheckFeature emacs_tags + " The sequence from the crash artifact: + let lines = [ + \ "\x0c\xff\xffT\x19\x8a", + \ "\x19\x19\x0dtags\x19\x19\x19\x00\xff\xff\xff", + \ "\x7f3\x0c" + \ ] + call writefile(lines, 'Xtags', 'D') + set tags=Xtags + call assert_fails(':tag a', 'E431:') + set tags& endfunc