aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-09-12 18:42:48 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-09-13 08:25:19 -0400
commitd5eff30c72fda97aa5f075718b3e1fef7c1baa4f (patch)
tree0e49e064a42fa97323b3defb04ccdde0f0c2cba2
parentc7ef802206601bccc49a67bed797b7e3ed25e0c1 (diff)
downloadrneovim-d5eff30c72fda97aa5f075718b3e1fef7c1baa4f.tar.gz
rneovim-d5eff30c72fda97aa5f075718b3e1fef7c1baa4f.tar.bz2
rneovim-d5eff30c72fda97aa5f075718b3e1fef7c1baa4f.zip
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
-rw-r--r--src/nvim/search.c2
-rw-r--r--src/nvim/testdir/test_search.vim12
2 files changed, 13 insertions, 1 deletions
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