diff options
author | shadmansaleh <shadmansaleh3@gmail.com> | 2021-04-20 22:51:29 +0600 |
---|---|---|
committer | shadmansaleh <shadmansaleh3@gmail.com> | 2021-05-09 06:37:02 +0600 |
commit | da22be9f3324dce7fe41124f9bca8714758d024f (patch) | |
tree | de65dc409ae9f5a38a5869faa646ee1f832f935f | |
parent | 973ecd8e90dda246f5f092c6e2e277d2ee488cfb (diff) | |
download | rneovim-da22be9f3324dce7fe41124f9bca8714758d024f.tar.gz rneovim-da22be9f3324dce7fe41124f9bca8714758d024f.tar.bz2 rneovim-da22be9f3324dce7fe41124f9bca8714758d024f.zip |
vim-patch:8.2.0896: crash when calling searchcount() with a string
Problem: Crash when calling searchcount() with a string.
Solution: Check the argument is a dict. (closes vim/vim#6192)
https://github.com/vim/vim/commit/14681627f39421cce289345d4ec9927c10fa3b1c
-rw-r--r-- | src/nvim/search.c | 9 | ||||
-rw-r--r-- | src/nvim/testdir/test_search_stat.vim | 4 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/nvim/search.c b/src/nvim/search.c index 89ee5b6bb7..a0553c1e27 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -4422,7 +4422,7 @@ static void update_search_stat(int dirc, pos_T *pos, pos_T *cursor_pos, int save_ws = p_ws; int wraparound = false; pos_T p = (*pos); - static pos_T lastpos = { 0, 0, 0 }; + static pos_T lastpos = { 0, 0, 0 }; static int cur = 0; static int cnt = 0; static int exact_match = false; @@ -4535,11 +4535,16 @@ void f_searchcount(typval_T *argvars, typval_T *rettv, FunPtr fptr) } if (argvars[0].v_type != VAR_UNKNOWN) { - dict_T *dict = argvars[0].vval.v_dict; + dict_T *dict; dictitem_T *di; listitem_T *li; bool error = false; + if (argvars[0].v_type != VAR_DICT || argvars[0].vval.v_dict == NULL) { + EMSG(_(e_dictreq)); + return; + } + dict = argvars[0].vval.v_dict; di = tv_dict_find(dict, (const char *)"timeout", -1); if (di != NULL) { timeout = (long)tv_get_number_chk(&di->di_tv, &error); diff --git a/src/nvim/testdir/test_search_stat.vim b/src/nvim/testdir/test_search_stat.vim index 96d4cea002..335a51268d 100644 --- a/src/nvim/testdir/test_search_stat.vim +++ b/src/nvim/testdir/test_search_stat.vim @@ -259,6 +259,10 @@ func Test_search_stat() bwipe! endfunc +func Test_searchcount_fails() + call assert_fails('echo searchcount("boo!")', 'E715:') +endfunc + func Test_search_stat_foldopen() CheckScreendump |