From d5eff30c72fda97aa5f075718b3e1fef7c1baa4f Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sat, 12 Sep 2020 18:42:48 -0400 Subject: vim-patch:8.1.0555: crash when last search pat is set but not last substitute pat Problem: Crash when last search pat is set but not last substitute pat. Solution: Do not mix up last search pattern and last subtitute pattern. (closes vim/vim#3647) https://github.com/vim/vim/commit/2fb8f684d888ad68b283ba8f9505106b5fb725be --- src/nvim/search.c | 2 +- src/nvim/testdir/test_search.vim | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/nvim/search.c b/src/nvim/search.c index 23d84038d6..08da391f97 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -1179,7 +1179,7 @@ int do_search( } if (*searchstr == NUL) { - p = spats[last_idx].pat; + p = spats[0].pat; } else { p = searchstr; } diff --git a/src/nvim/testdir/test_search.vim b/src/nvim/testdir/test_search.vim index 767cf99be3..2e2061f1ff 100644 --- a/src/nvim/testdir/test_search.vim +++ b/src/nvim/testdir/test_search.vim @@ -982,6 +982,18 @@ func Test_search_sentence() / endfunc +" Test that there is no crash when there is a last search pattern but no last +" substitute pattern. +func Test_no_last_substitute_pat() + " Use viminfo to set the last search pattern to a string and make the last + " substitute pattern the most recent used and make it empty (NULL). + call writefile(['~MSle0/bar', '~MSle0~&'], 'Xviminfo') + rviminfo! Xviminfo + call assert_fails('normal n', 'E35:') + + call delete('Xviminfo') +endfunc + func Test_large_hex_chars1() " This used to cause a crash, the character becomes an NFA state. try -- cgit