Mercurial > vim
diff src/normal.c @ 9315:1b4946fa3777 v7.4.1940
commit https://github.com/vim/vim/commit/23c60f21b07b04351d846e6fbf4f4abd9aa09345
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 15 22:03:48 2016 +0200
patch 7.4.1940
Problem: "gd" hangs in some situations. (Eric Biggers)
Solution: Remove the SEARCH_START flag when looping. Add a test.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 15 Jun 2016 22:15:06 +0200 |
parents | 0d52ddff8db4 |
children | 43b8570abbec |
line wrap: on
line diff
--- a/src/normal.c +++ b/src/normal.c @@ -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)