0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
Bram Moolenaar 2017-12-19 11:55:26 +01:00
parent 132f75255e
commit 338e47fdfd
4 changed files with 7 additions and 4 deletions

View File

@ -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 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 {ic} is given and it's |TRUE| then case is ignored.
When {comp} is a string then the number of not overlapping 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()*
cscope_connection([{num} , {dbpath} [, {prepend}]]) cscope_connection([{num} , {dbpath} [, {prepend}]])

View File

@ -2382,7 +2382,7 @@ f_count(typval_T *argvars, typval_T *rettv)
char_u *p = argvars[0].vval.v_string; char_u *p = argvars[0].vval.v_string;
char_u *next; char_u *next;
if (!error && expr != NULL && p != NULL) if (!error && expr != NULL && *expr != NUL && p != NULL)
{ {
if (ic) if (ic)
{ {

View File

@ -692,6 +692,7 @@ func Test_count()
call assert_equal(0, count("foo", "O")) call assert_equal(0, count("foo", "O"))
call assert_equal(2, count("foo", "O", 1)) call assert_equal(2, count("foo", "O", 1))
call assert_equal(2, count("fooooo", "oo")) call assert_equal(2, count("fooooo", "oo"))
call assert_equal(0, count("foo", ""))
endfunc endfunc
func Test_changenr() func Test_changenr()

View File

@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1410,
/**/ /**/
1409, 1409,
/**/ /**/