changeset 15089:e428882d6ffb v8.1.0555

patch 8.1.0555: crash when last search pat is set but not last substitute pat commit https://github.com/vim/vim/commit/2fb8f684d888ad68b283ba8f9505106b5fb725be Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 1 13:14:45 2018 +0100 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)
author Bram Moolenaar <Bram@vim.org>
date Sat, 01 Dec 2018 13:15:04 +0100
parents 4460aef12c69
children a5a7fa34aa88
files src/search.c src/testdir/test_search.vim src/version.c
diffstat 3 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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));
--- 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
--- 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,