]> granicus.if.org Git - vim/commitdiff
patch 8.1.0555: crash when last search pat is set but not last substitute pat v8.1.0555
authorBram Moolenaar <Bram@vim.org>
Sat, 1 Dec 2018 12:14:45 +0000 (13:14 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 1 Dec 2018 12:14:45 +0000 (13:14 +0100)
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
src/testdir/test_search.vim
src/version.c

index d7aa59278d20165c84447f33e964a53c634379fa..6d245caffc076997574ee33dc5e83c7e7b648d0c 100644 (file)
@@ -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));
index b05ed4271ab5d7b1102f18e40285e0ab14b15851..eadb128e038e350c219b172326183deaf9a2688f 100644 (file)
@@ -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
index 6cce56670d7ff4c25201578c5b7b74a0dd490094..566f94da55a81071b411c4f9a013db69dbd5dc95 100644 (file)
@@ -792,6 +792,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    555,
 /**/
     554,
 /**/