1
0
forked from aniani/vim

updated for version 7.3.1086

Problem:    Old regexp engine accepts illegal range, new one doesn't.
Solution:   Also accept the illegal range with the new engine.
This commit is contained in:
Bram Moolenaar
2013-06-01 13:24:24 +02:00
parent 36b3a011d3
commit 75d7a06920
4 changed files with 14 additions and 10 deletions

View File

@@ -1089,8 +1089,9 @@ collection:
* while loop. */ * while loop. */
} }
} }
/* Try a range like 'a-x' or '\t-z' */ /* Try a range like 'a-x' or '\t-z'. Also allows '-' as a
if (*regparse == '-') * start character. */
if (*regparse == '-' && oldstartc != -1)
{ {
emit_range = TRUE; emit_range = TRUE;
startc = oldstartc; startc = oldstartc;
@@ -1140,16 +1141,13 @@ collection:
/* Normal printable char */ /* Normal printable char */
if (startc == -1) if (startc == -1)
#ifdef FEAT_MBYTE startc = PTR2CHAR(regparse);
startc = (*mb_ptr2char)(regparse);
#else
startc = *regparse;
#endif
/* Previous char was '-', so this char is end of range. */ /* Previous char was '-', so this char is end of range. */
if (emit_range) if (emit_range)
{ {
endc = startc; startc = oldstartc; endc = startc;
startc = oldstartc;
if (startc > endc) if (startc > endc)
EMSG_RET_FAIL(_(e_invrange)); EMSG_RET_FAIL(_(e_invrange));
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
@@ -1166,7 +1164,6 @@ collection:
TRY_NEG(); TRY_NEG();
EMIT_GLUE(); EMIT_GLUE();
} }
emit_range = FALSE;
} }
else else
#endif #endif
@@ -1190,8 +1187,9 @@ collection:
TRY_NEG(); TRY_NEG();
EMIT_GLUE(); EMIT_GLUE();
} }
emit_range = FALSE;
} }
emit_range = FALSE;
startc = -1;
} }
else else
{ {

View File

@@ -270,6 +270,7 @@ STARTTEST
:call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"]) :call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
:call add(tl, [2, '\_f', " \na ", "\n"]) :call add(tl, [2, '\_f', " \na ", "\n"])
:call add(tl, [2, '\_f\+', " \na ", "\na"]) :call add(tl, [2, '\_f\+', " \na ", "\na"])
:call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
:" :"
:"""" Test start/end of line, start/end of file :"""" Test start/end of line, start/end of file
:call add(tl, [2, '^a.', "a_\nb ", "a_"]) :call add(tl, [2, '^a.', "a_\nb ", "a_"])

View File

@@ -605,6 +605,9 @@ OK 2 - \_f
OK 0 - \_f\+ OK 0 - \_f\+
OK 1 - \_f\+ OK 1 - \_f\+
OK 2 - \_f\+ OK 2 - \_f\+
OK 0 - [0-9A-Za-z-_.]\+
OK 1 - [0-9A-Za-z-_.]\+
OK 2 - [0-9A-Za-z-_.]\+
OK 0 - ^a. OK 0 - ^a.
OK 1 - ^a. OK 1 - ^a.
OK 2 - ^a. OK 2 - ^a.

View File

@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1086,
/**/ /**/
1085, 1085,
/**/ /**/