Mercurial > vim
changeset 13070:17720967656c v8.0.1410
patch 8.0.1410: hang when using count() with an empty string
commit https://github.com/vim/vim/commit/338e47fdfdf0d918dae50a5cbf0cf4f7be45b4f0
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 19 Dec 2017 12:00:05 +0100 |
parents | 5dcf876e6c69 |
children | 40e1f60f4eeb |
files | runtime/doc/eval.txt src/evalfunc.c src/testdir/test_functions.vim src/version.c |
diffstat | 4 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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}]])
--- 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) {
--- 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()