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)
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()
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'
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 945,
/**/
944,
/**/