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:
@@ -7998,6 +7998,8 @@ vim_regcomp(char_u *expr_arg, int re_flags)
|
|||||||
bt_regengine.expr = expr;
|
bt_regengine.expr = expr;
|
||||||
nfa_regengine.expr = expr;
|
nfa_regengine.expr = expr;
|
||||||
#endif
|
#endif
|
||||||
|
// reg_iswordc() uses rex.reg_buf
|
||||||
|
rex.reg_buf = curbuf;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First try the NFA engine, unless backtracking was requested.
|
* First try the NFA engine, unless backtracking was requested.
|
||||||
|
@@ -104,3 +104,19 @@ func Test_get_equi_class()
|
|||||||
s/^/[[=
|
s/^/[[=
|
||||||
call assert_equal(1, search(getline(1)))
|
call assert_equal(1, search(getline(1)))
|
||||||
endfunc
|
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
|
||||||
|
@@ -779,6 +779,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 */
|
||||||
|
/**/
|
||||||
|
935,
|
||||||
/**/
|
/**/
|
||||||
934,
|
934,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user