# HG changeset patch # User Bram Moolenaar # Date 1543666504 -3600 # Node ID e428882d6ffb9f4ba9bf4759a72d000a8f01fb4a # Parent 4460aef12c69468f1f80a9ca924b028a4a26e6aa 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 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) diff --git a/src/search.c b/src/search.c --- 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 --- 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 --- 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,