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:
@@ -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)
|
||||||
|
@@ -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
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user