1
0
Fork 0
mirror of https://github.com/vim/vim synced 2025-03-31 06:56:44 +02: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 locally,
int thisblock,
int searchflags) /* flags passed to searchit() */
int flags_arg) /* flags passed to searchit() */
{
char_u *pat;
pos_T old_pos;
@ -4261,6 +4261,7 @@ find_decl(
int save_p_scs;
int retval = OK;
int incll;
int searchflags = flags_arg;
if ((pat = alloc(len + 7)) == NULL)
return FAIL;
@ -4346,8 +4347,10 @@ find_decl(
/* 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. */
* 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 == FAIL)

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

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