# HG changeset patch # User Christian Brabandt # Date 1473450305 -7200 # Node ID ab45de65977b4fb9d80c34fc7463f47658b98a20 # Parent f14ed140ad0c4d2c7579fc181e2fa59110d44d7d commit https://github.com/vim/vim/commit/ea683da58cf9ecf3afab9d650d3d2da76e5298d3 Author: Bram Moolenaar Date: Fri Sep 9 21:41:34 2016 +0200 patch 7.4.2356 Problem: Reading past end of line when using previous substitute pattern. (Dominique Pelle) Solution: Don't set "pat" only set "searchstr". diff --git a/src/search.c b/src/search.c --- a/src/search.c +++ b/src/search.c @@ -1240,14 +1240,13 @@ do_search( { if (spats[RE_SEARCH].pat == NULL) /* no previous pattern */ { - pat = spats[RE_SUBST].pat; - if (pat == NULL) + searchstr = spats[RE_SUBST].pat; + if (searchstr == NULL) { EMSG(_(e_noprevre)); retval = 0; goto end_do_search; } - searchstr = pat; } else { 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 @@ -268,3 +268,14 @@ func Test_search_cmdline2() call test_disable_char_avail(0) bw! endfunc + +func Test_use_sub_pat() + split + let @/ = '' + func X() + s/^/a/ + / + endfunc + call X() + bwipe! +endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2356, +/**/ 2355, /**/ 2354,