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

View File

@@ -1,6 +1,6 @@
" Test commands that jump somewhere. " Test commands that jump somewhere.
func Test_geedee() func Test_geeDEE()
new new
call setline(1, ["Filename x;", "", "int Filename", "int func() {", "Filename y;"]) call setline(1, ["Filename x;", "", "int Filename", "int func() {", "Filename y;"])
/y;/ /y;/
@@ -8,3 +8,13 @@ func Test_geedee()
call assert_equal(1, line('.')) call assert_equal(1, line('.'))
quit! quit!
endfunc 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 // 1943 NA
// 1942 NA // 1942 NA
1941, 1941,
// 1940, 1940,
// 1939 NA // 1939 NA
// 1938 NA // 1938 NA
1937, 1937,