From: Bram Moolenaar Date: Sun, 17 Feb 2019 19:17:02 +0000 (+0100) Subject: patch 8.1.0945: internal error when using pattern with NL in the range X-Git-Tag: v8.1.0945 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a5483448cba6997517003a22a8029f0de1007d0e;p=vim patch 8.1.0945: internal error when using pattern with NL in the range Problem: Internal error when using pattern with NL in the range. Solution: Use an actual newline for the range. (closes #3989) Also fix error message. (Dominique Pelle) --- diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index b83e309f7..9633791bc 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -245,7 +245,7 @@ static int nfa_classcodes[] = { static char_u e_nul_found[] = N_("E865: (NFA) Regexp end encountered prematurely"); static char_u e_misplaced[] = N_("E866: (NFA regexp) Misplaced %c"); -static char_u e_ill_char_class[] = N_("E877: (NFA regexp) Invalid character class: %ld"); +static char_u e_ill_char_class[] = N_("E877: (NFA regexp) Invalid character class: %d"); // Variables only used in nfa_regcomp() and descendants. static int nfa_re_flags; // re_flags passed to nfa_regcomp() @@ -1785,7 +1785,8 @@ collection: MB_PTR_ADV(regparse); if (*regparse == 'n') - startc = reg_string ? NL : NFA_NEWL; + startc = (reg_string || emit_range + || regparse[1] == '-') ? NL : NFA_NEWL; else if (*regparse == 'd' || *regparse == 'o' diff --git a/src/testdir/test_regexp_latin.vim b/src/testdir/test_regexp_latin.vim index d30312a11..d603acdbc 100644 --- a/src/testdir/test_regexp_latin.vim +++ b/src/testdir/test_regexp_latin.vim @@ -122,3 +122,11 @@ func Test_rex_init() bwipe! set re=0 endfunc + +func Test_range_with_newline() + new + call setline(1, "a") + call assert_equal(0, search("[ -*\\n- ]")) + call assert_equal(0, search("[ -*\\t-\\n]")) + bwipe! +endfunc diff --git a/src/version.c b/src/version.c index b3244c168..0d44663a2 100644 --- a/src/version.c +++ b/src/version.c @@ -779,6 +779,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 945, /**/ 944, /**/