neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 08d9d74fd91adb29e1f71a48a21df955568cdfcb
parent d4982e152c8e92ee7a4092a58c272ed364c79b64
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat, 12 Mar 2022 08:08:31 +0800

Merge pull request #17680 from zeertzjq/vim-8.2.4440

vim-patch:8.2.{4440,4443}: crash with specific regexp pattern and string
Diffstat:
Msrc/nvim/regexp_bt.c | 4++++
Msrc/nvim/testdir/test_regexp_utf8.vim | 12++++++++++--
2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/nvim/regexp_bt.c b/src/nvim/regexp_bt.c @@ -4083,6 +4083,10 @@ static bool regmatch( break; if (rex.input == rex.line) { // backup to last char of previous line + if (rex.lnum == 0) { + status = RA_NOMATCH; + break; + } rex.lnum--; rex.line = reg_getline(rex.lnum); // Just in case regrepeat() didn't count right. diff --git a/src/nvim/testdir/test_regexp_utf8.vim b/src/nvim/testdir/test_regexp_utf8.vim @@ -540,7 +540,6 @@ endfunc " Check that [[:upper:]] matches for automatic engine func Test_match_char_class_upper() new - let _engine=&regexpengine " Test 1: [[:upper:]]\{2,\} set regexpengine=0 @@ -581,7 +580,7 @@ func Test_match_char_class_upper() call assert_equal(4, searchcount().total, 'TEST 3 lower') " clean up - let &regexpengine=_engine + set regexpengine=0 bwipe! endfunc @@ -593,4 +592,13 @@ func Test_match_invalid_byte() call delete('Xinvalid') endfunc +func Test_match_too_complicated() + set regexpengine=1 + exe "noswapfile vsplit \xeb\xdb\x99" + silent! buf \&\zs*\zs*0 + bwipe! + set regexpengine=0 +endfunc + + " vim: shiftwidth=2 sts=2 expandtab