From: Bram Moolenaar Date: Tue, 19 Dec 2017 10:55:26 +0000 (+0100) Subject: patch 8.0.1410: hang when using count() with an empty string X-Git-Tag: v8.0.1410 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=338e47fdfdf0d918dae50a5cbf0cf4f7be45b4f0;p=vim 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 #2465) --- diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index c621ba1ff..df00dc9e4 100644 --- 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}]]) *count()* 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 index 9aacd3078..7f78a9d70 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -2382,7 +2382,7 @@ f_count(typval_T *argvars, typval_T *rettv) 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 index d9040137c..20e4280c1 100644 --- 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 index 97f0d66ca..cf53357a7 100644 --- a/src/version.c +++ b/src/version.c @@ -771,6 +771,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1410, /**/ 1409, /**/