diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-09-07 18:21:24 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-07 18:21:24 +0100 |
commit | 75a115e8d632e96b4f45dc5145ba261876a83dcf (patch) | |
tree | 31b49d9c295e0732eea955233ab1d0cbd7e9a649 | |
parent | 9667b2c888351b04751bdb43cba0d4ffc8c13ab1 (diff) | |
download | vim-git-75a115e8d632e96b4f45dc5145ba261876a83dcf.tar.gz |
patch 9.0.0407: matchstr() does match column offsetv9.0.0407
Problem: matchstr() does match column offset. (Yasuhiro Matsumoto)
Solution: Accept line number zero. (closes #10938)
-rw-r--r-- | src/regexp_bt.c | 2 | ||||
-rw-r--r-- | src/regexp_nfa.c | 2 | ||||
-rw-r--r-- | src/testdir/test_regexp_latin.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 17 insertions, 2 deletions
diff --git a/src/regexp_bt.c b/src/regexp_bt.c index cf484e0ba..e3e7a1801 100644 --- a/src/regexp_bt.c +++ b/src/regexp_bt.c @@ -3444,7 +3444,7 @@ regmatch( linenr_T lnum = rex.reg_firstlnum + rex.lnum; long_u vcol = 0; - if (lnum > 0 && lnum <= wp->w_buffer->b_ml.ml_line_count) + if (lnum >= 0 && lnum <= wp->w_buffer->b_ml.ml_line_count) vcol = (long_u)win_linetabsize(wp, lnum, rex.line, (colnr_T)(rex.input - rex.line)); if (!re_num_cmp(vcol + 1, scan)) diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index f8717f5b1..b39848927 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -6778,7 +6778,7 @@ nfa_regmatch( linenr_T lnum = rex.reg_firstlnum + rex.lnum; long_u vcol = 0; - if (lnum > 0 + if (lnum >= 0 && lnum <= wp->w_buffer->b_ml.ml_line_count) vcol = (long_u)win_linetabsize(wp, lnum, rex.line, col); diff --git a/src/testdir/test_regexp_latin.vim b/src/testdir/test_regexp_latin.vim index bc08439d1..6f3ffe23f 100644 --- a/src/testdir/test_regexp_latin.vim +++ b/src/testdir/test_regexp_latin.vim @@ -30,11 +30,13 @@ endfunc func Test_equivalence_re1() set re=1 call s:equivalence_test() + set re=0 endfunc func Test_equivalence_re2() set re=2 call s:equivalence_test() + set re=0 endfunc func Test_recursive_substitute() @@ -67,6 +69,7 @@ func Test_eow_with_optional() let actual = matchlist('abc def', '\(abc\>\)\?\s*\(def\)') call assert_equal(expected, actual) endfor + set re=0 endfunc func Test_backref() @@ -1141,4 +1144,14 @@ def Test_compare_columns() prop_type_delete('name') enddef +def Test_compare_column_matchstr() + enew + set re=1 + call assert_equal('aaa', matchstr('aaaaaaaaaaaaaaaaaaaa', '.*\%<5v')) + set re=2 + call assert_equal('aaa', matchstr('aaaaaaaaaaaaaaaaaaaa', '.*\%<5v')) + set re=0 +enddef + + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index e4b0b09a2..92fd7e7c8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 407, +/**/ 406, /**/ 405, |