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 b83e309..9633791 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -245,7 +245,7 @@
 
 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 @@
 			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'