summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-12-01 13:14:45 +0100
committerBram Moolenaar <Bram@vim.org>2018-12-01 13:14:45 +0100
commit2fb8f684d888ad68b283ba8f9505106b5fb725be (patch)
tree4b35240d5ad0d545dff340a493e652c41211909d
parent614ab8aa00346724bfc27980d25985d482269b75 (diff)
patch 8.1.0555: crash when last search pat is set but not last substitute patv8.1.0555
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)
-rw-r--r--src/search.c2
-rw-r--r--src/testdir/test_search.vim12
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/search.c b/src/search.c
index d7aa59278d..6d245caffc 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 b05ed4271a..eadb128e03 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 6cce56670d..566f94da55 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 555,
+/**/
554,
/**/
553,