# HG changeset patch # User Christian Brabandt # Date 1513681205 -3600 # Node ID 17720967656cd9e850b922b42e1990706c858ec2 # Parent 5dcf876e6c699dc0e3fb6cb2d9dcdae812df132d patch 8.0.1410: hang when using count() with an empty string commit https://github.com/vim/vim/commit/338e47fdfdf0d918dae50a5cbf0cf4f7be45b4f0 Author: Bram Moolenaar Date: Tue Dec 19 11:55:26 2017 +0100 patch 8.0.1410: hang when using count() with an empty string Problem: Hang when using count() with an empty string. Solution: Return zero for an empty string. (Dominique Pelle, closes https://github.com/vim/vim/issues/2465) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.0. Last change: 2017 Dec 16 +*eval.txt* For Vim version 8.0. Last change: 2017 Dec 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3338,8 +3338,8 @@ count({comp}, {expr} [, {ic} [, {start}] When {ic} is given and it's |TRUE| then case is ignored. When {comp} is a string then the number of not overlapping - occurrences of {expr} is returned. - + occurrences of {expr} is returned. Zero is returned when + {expr} is an empty string. *cscope_connection()* cscope_connection([{num} , {dbpath} [, {prepend}]]) diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -2382,7 +2382,7 @@ f_count(typval_T *argvars, typval_T *ret char_u *p = argvars[0].vval.v_string; char_u *next; - if (!error && expr != NULL && p != NULL) + if (!error && expr != NULL && *expr != NUL && p != NULL) { if (ic) { diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -692,6 +692,7 @@ func Test_count() call assert_equal(0, count("foo", "O")) call assert_equal(2, count("foo", "O", 1)) call assert_equal(2, count("fooooo", "oo")) + call assert_equal(0, count("foo", "")) endfunc func Test_changenr() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -772,6 +772,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1410, +/**/ 1409, /**/ 1408,