1
0
forked from aniani/vim

patch 8.1.0935: old regexp engine may use invalid buffer

Problem:    Old regexp engine may use invalid buffer for 'iskeyword' or
            uninitialized buffer pointer. (Kuang-che Wu)
Solution:   Set rex.reg_buf when compiling the pattern. (closes #3972)
This commit is contained in:
Bram Moolenaar
2019-02-16 18:07:57 +01:00
parent 985079c514
commit 8bfd9469ce
3 changed files with 20 additions and 0 deletions

View File

@@ -7998,6 +7998,8 @@ vim_regcomp(char_u *expr_arg, int re_flags)
bt_regengine.expr = expr;
nfa_regengine.expr = expr;
#endif
// reg_iswordc() uses rex.reg_buf
rex.reg_buf = curbuf;
/*
* First try the NFA engine, unless backtracking was requested.

View File

@@ -104,3 +104,19 @@ func Test_get_equi_class()
s/^/[[=
call assert_equal(1, search(getline(1)))
endfunc
func Test_rex_init()
set noincsearch
set re=1
new
setlocal iskeyword=a-z
call setline(1, ['abc', 'ABC'])
call assert_equal(1, search('[[:keyword:]]'))
new
setlocal iskeyword=A-Z
call setline(1, ['abc', 'ABC'])
call assert_equal(2, search('[[:keyword:]]'))
bwipe!
bwipe!
set re=0
endfunc

View File

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