vim-patch:7.4.1940 (#5849)

Problem:    "gd" hangs in some situations. (Eric Biggers)
Solution:   Remove the SEARCH_START flag when looping.  Add a test.

23c60f21b0
This commit is contained in:
lonerover 2017-01-01 00:30:04 +08:00 committed by Justin M. Keyes
parent aa35cd9af0
commit b37da9c664
3 changed files with 19 additions and 6 deletions

View File

@ -3666,7 +3666,7 @@ find_decl (
size_t len,
bool locally,
bool thisblock,
int searchflags /* flags passed to searchit() */
int flags_arg // flags passed to searchit()
)
{
char_u *pat;
@ -3678,6 +3678,7 @@ find_decl (
bool save_p_scs;
bool retval = true;
bool incll;
int searchflags = flags_arg;
pat = xmalloc(len + 7);
@ -3751,10 +3752,12 @@ find_decl (
break;
}
/* For finding a local variable and the match is before the "{" search
* to find a later match. For K&R style function declarations this
* skips the function header without types. */
// For finding a local variable and the match is before the "{" search
// to find a later match. For K&R style function declarations this
// skips the function header without types. Remove SEARCH_START from
// flags to avoid getting stuck at one position.
found_pos = curwin->w_cursor;
searchflags &= ~SEARCH_START;
}
if (t == false) {

View File

@ -1,6 +1,6 @@
" Test commands that jump somewhere.
func Test_geedee()
func Test_geeDEE()
new
call setline(1, ["Filename x;", "", "int Filename", "int func() {", "Filename y;"])
/y;/
@ -8,3 +8,13 @@ func Test_geedee()
call assert_equal(1, line('.'))
quit!
endfunc
func Test_gee_dee()
new
call setline(1, ["int x;", "", "int func(int x)", "{", " return x;", "}"])
/return/
normal $hgd
call assert_equal(3, line('.'))
call assert_equal(14, col('.'))
quit!
endfunc

View File

@ -500,7 +500,7 @@ static int included_patches[] = {
// 1943 NA
// 1942 NA
1941,
// 1940,
1940,
// 1939 NA
// 1938 NA
1937,