vim-patch:7.4.2356 (#6880)

Problem:    Reading past end of line when using previous substitute pattern.
            (Dominique Pelle)
Solution:   Don't set "pat" only set "searchstr".

ea683da58c
This commit is contained in:
Shougo
2017-06-19 08:13:32 +09:00
committed by Justin M. Keyes
parent 3a86dd54f3
commit 694eb18e03
4 changed files with 17 additions and 5 deletions

View File

@@ -1005,14 +1005,13 @@ int do_search(
dircp = NULL; dircp = NULL;
/* use previous pattern */ /* use previous pattern */
if (pat == NULL || *pat == NUL || *pat == dirc) { if (pat == NULL || *pat == NUL || *pat == dirc) {
if (spats[RE_SEARCH].pat == NULL) { /* no previous pattern */ if (spats[RE_SEARCH].pat == NULL) { // no previous pattern
pat = spats[RE_SUBST].pat; searchstr = spats[RE_SUBST].pat;
if (pat == NULL) { if (searchstr == NULL) {
EMSG(_(e_noprevre)); EMSG(_(e_noprevre));
retval = 0; retval = 0;
goto end_do_search; goto end_do_search;
} }
searchstr = pat;
} else { } else {
/* make search_regcomp() use spats[RE_SEARCH].pat */ /* make search_regcomp() use spats[RE_SEARCH].pat */
searchstr = (char_u *)""; searchstr = (char_u *)"";

View File

@@ -58,6 +58,7 @@ NEW_TESTS ?= \
test_nested_function.res \ test_nested_function.res \
test_normal.res \ test_normal.res \
test_quickfix.res \ test_quickfix.res \
test_search.res \
test_signs.res \ test_signs.res \
test_smartindent.res \ test_smartindent.res \
test_stat.res \ test_stat.res \

View File

@@ -0,0 +1,12 @@
" Test for the search command
func Test_use_sub_pat()
split
let @/ = ''
func X()
s/^/a/
/
endfunc
call X()
bwipe!
endfunc

View File

@@ -88,7 +88,7 @@ static const int included_patches[] = {
2359, 2359,
// 2358 NA // 2358 NA
2357, 2357,
// 2356, 2356,
2355, 2355,
// 2354, // 2354,
2353, 2353,