forked from aniani/vim
patch 8.2.4440: crash with specific regexp pattern and string
Problem: Crash with specific regexp pattern and string. Solution: Stop at the start of the string.
This commit is contained in:
@@ -4615,6 +4615,11 @@ regmatch(
|
|||||||
if (rex.input == rex.line)
|
if (rex.input == rex.line)
|
||||||
{
|
{
|
||||||
// backup to last char of previous line
|
// backup to last char of previous line
|
||||||
|
if (rex.lnum == 0)
|
||||||
|
{
|
||||||
|
status = RA_NOMATCH;
|
||||||
|
break;
|
||||||
|
}
|
||||||
--rex.lnum;
|
--rex.lnum;
|
||||||
rex.line = reg_getline(rex.lnum);
|
rex.line = reg_getline(rex.lnum);
|
||||||
// Just in case regrepeat() didn't count
|
// Just in case regrepeat() didn't count
|
||||||
|
@@ -508,7 +508,6 @@ endfunc
|
|||||||
" Check that [[:upper:]] matches for automatic engine
|
" Check that [[:upper:]] matches for automatic engine
|
||||||
func Test_match_char_class_upper()
|
func Test_match_char_class_upper()
|
||||||
new
|
new
|
||||||
let _engine=®expengine
|
|
||||||
|
|
||||||
" Test 1: [[:upper:]]\{2,\}
|
" Test 1: [[:upper:]]\{2,\}
|
||||||
set regexpengine=0
|
set regexpengine=0
|
||||||
@@ -549,7 +548,7 @@ func Test_match_char_class_upper()
|
|||||||
call assert_equal(4, searchcount().total, 'TEST 3 lower')
|
call assert_equal(4, searchcount().total, 'TEST 3 lower')
|
||||||
|
|
||||||
" clean up
|
" clean up
|
||||||
let ®expengine=_engine
|
set regexpengine=0
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -561,4 +560,13 @@ func Test_match_invalid_byte()
|
|||||||
call delete('Xinvalid')
|
call delete('Xinvalid')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_match_too_complicated()
|
||||||
|
set regexpengine=1
|
||||||
|
exe "vsplit \xeb\xdb\x99"
|
||||||
|
silent! buf \&\zs*\zs*0
|
||||||
|
bwipe!
|
||||||
|
set regexpengine=0
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
4440,
|
||||||
/**/
|
/**/
|
||||||
4439,
|
4439,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user