From 2fb8f684d888ad68b283ba8f9505106b5fb725be Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 1 Dec 2018 13:14:45 +0100 Subject: [PATCH] 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 #3647) --- src/search.c | 2 +- src/testdir/test_search.vim | 12 ++++++++++++ src/version.c | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/search.c b/src/search.c index d7aa59278..6d245caff 100644 --- a/src/search.c +++ b/src/search.c @@ -1385,7 +1385,7 @@ do_search( char_u *trunc; if (*searchstr == NUL) - p = spats[last_idx].pat; + p = spats[0].pat; else p = searchstr; msgbuf = alloc((unsigned)(STRLEN(p) + 40)); diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim index b05ed4271..eadb128e0 100644 --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -1142,3 +1142,15 @@ 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 diff --git a/src/version.c b/src/version.c index 6cce56670..566f94da5 100644 --- a/src/version.c +++ b/src/version.c @@ -792,6 +792,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 555, /**/ 554, /**/ -- 2.40.0