# HG changeset patch # User Christian Brabandt # Date 1459024205 -3600 # Node ID 03e5171c23e5340b2afb4766ed4f559ac5c3e19e # Parent 8e668324528dc5c246675c6df8738b2947f6d1eb commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a Author: Bram Moolenaar Date: Sat Mar 26 21:24:14 2016 +0100 patch 7.4.1660 Problem: has('patch-7.4.1') doesn't work. Solution: Fix off-by-one error. (Thinca) diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -13838,7 +13838,7 @@ f_has(typval_T *argvars, typval_T *rettv if (STRNICMP(name, "patch", 5) == 0) { if (name[5] == '-' - && STRLEN(name) > 11 + && STRLEN(name) >= 11 && vim_isdigit(name[6]) && vim_isdigit(name[8]) && vim_isdigit(name[10])) diff --git a/src/testdir/test60.in b/src/testdir/test60.in --- a/src/testdir/test60.in +++ b/src/testdir/test60.in @@ -589,15 +589,6 @@ endfunction endfunction :call TestExists() :" -:function TestHas() - redir >> test.out - for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1'] - echo 'has patch ' . pl . ': ' . has('patch-' . pl) - endfor - redir END -endfunc -:call TestHas() -:" :delfunc TestExists :delfunc RunTest :delfunc TestFuncArg diff --git a/src/testdir/test60.ok b/src/testdir/test60.ok --- a/src/testdir/test60.ok +++ b/src/testdir/test60.ok @@ -204,8 +204,3 @@ OK g:footest#x = 1 footest#F() 0 UndefFun() 0 -has patch 6.9.999: 1 -has patch 7.1.999: 1 -has patch 7.4.123: 1 -has patch 9.1.0: 0 -has patch 9.9.1: 0 diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim --- a/src/testdir/test_expr.vim +++ b/src/testdir/test_expr.vim @@ -21,3 +21,18 @@ func Test_equal() call assert_fails('echo base.method > instance.method') endfunc + +func Test_version() + call assert_true(has('patch-7.4.001')) + call assert_true(has('patch-7.4.01')) + call assert_true(has('patch-7.4.1')) + call assert_true(has('patch-6.9.999')) + call assert_true(has('patch-7.1.999')) + call assert_true(has('patch-7.4.123')) + + call assert_false(has('patch-7')) + call assert_false(has('patch-7.4')) + call assert_false(has('patch-7.4.')) + call assert_false(has('patch-9.1.0')) + call assert_false(has('patch-9.9.1')) +endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1660, +/**/ 1659, /**/ 1658,