0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 7.4.1940

Problem:    "gd" hangs in some situations. (Eric Biggers)
Solution:   Remove the SEARCH_START flag when looping.  Add a test.
This commit is contained in:
Bram Moolenaar
2016-06-15 22:03:48 +02:00
parent 28607ba2b8
commit 23c60f21b0
3 changed files with 18 additions and 3 deletions

View File

@@ -4250,7 +4250,7 @@ find_decl(
int len, int len,
int locally, int locally,
int thisblock, int thisblock,
int searchflags) /* flags passed to searchit() */ int flags_arg) /* flags passed to searchit() */
{ {
char_u *pat; char_u *pat;
pos_T old_pos; pos_T old_pos;
@@ -4261,6 +4261,7 @@ find_decl(
int save_p_scs; int save_p_scs;
int retval = OK; int retval = OK;
int incll; int incll;
int searchflags = flags_arg;
if ((pat = alloc(len + 7)) == NULL) if ((pat = alloc(len + 7)) == NULL)
return FAIL; return FAIL;
@@ -4346,8 +4347,10 @@ find_decl(
/* 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 == FAIL) if (t == FAIL)

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

@@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1940,
/**/ /**/
1939, 1939,
/**/ /**/