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:
parent
28607ba2b8
commit
23c60f21b0
3 changed files with 18 additions and 3 deletions
src
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -753,6 +753,8 @@ static char *(features[]) =
|
|||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1940,
|
||||
/**/
|
||||
1939,
|
||||
/**/
|
||||
|
|
Loading…
Add table
Reference in a new issue