aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/regexp_bt.c4
-rw-r--r--src/nvim/testdir/test_regexp_utf8.vim12
2 files changed, 14 insertions, 2 deletions
diff --git a/src/nvim/regexp_bt.c b/src/nvim/regexp_bt.c
index f6804e8415..1153b8ed33 100644
--- 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
index b640a6d043..eab47dbccc 100644
--- 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