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:
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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_"])
|
||||||
|
@@ -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.
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user