diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-12-19 11:55:26 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-12-19 11:55:26 +0100 |
commit | 338e47fdfdf0d918dae50a5cbf0cf4f7be45b4f0 (patch) | |
tree | 77167ff3898adcfed642be034f6840e68aa4d8bf | |
parent | 132f75255ecea17ff621f71236568c5d8d8e0163 (diff) | |
download | vim-git-338e47fdfdf0d918dae50a5cbf0cf4f7be45b4f0.tar.gz |
patch 8.0.1410: hang when using count() with an empty stringv8.0.1410
Problem: Hang when using count() with an empty string.
Solution: Return zero for an empty string. (Dominique Pelle, closes #2465)
-rw-r--r-- | runtime/doc/eval.txt | 6 | ||||
-rw-r--r-- | src/evalfunc.c | 2 | ||||
-rw-r--r-- | src/testdir/test_functions.vim | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 7 insertions, 4 deletions
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 @@ -772,6 +772,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1410, +/**/ 1409, /**/ 1408, |