mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
updated for version 7.3.1034
Problem: New regexp code using strange multi-byte code. Solution: Use the normal code to advance and backup pointers.
This commit is contained in:
parent
5714b80032
commit
51a2983904
@ -188,8 +188,6 @@ static int istate; /* Index in the state vector, used in new_state() */
|
|||||||
static int nfa_regcomp_start __ARGS((char_u*expr, int re_flags));
|
static int nfa_regcomp_start __ARGS((char_u*expr, int re_flags));
|
||||||
static int nfa_recognize_char_class __ARGS((char_u *start, char_u *end, int extra_newl));
|
static int nfa_recognize_char_class __ARGS((char_u *start, char_u *end, int extra_newl));
|
||||||
static int nfa_emit_equi_class __ARGS((int c, int neg));
|
static int nfa_emit_equi_class __ARGS((int c, int neg));
|
||||||
static void nfa_inc __ARGS((char_u **p));
|
|
||||||
static void nfa_dec __ARGS((char_u **p));
|
|
||||||
static int nfa_regatom __ARGS((void));
|
static int nfa_regatom __ARGS((void));
|
||||||
static int nfa_regpiece __ARGS((void));
|
static int nfa_regpiece __ARGS((void));
|
||||||
static int nfa_regconcat __ARGS((void));
|
static int nfa_regconcat __ARGS((void));
|
||||||
@ -553,48 +551,6 @@ nfa_emit_equi_class(c, neg)
|
|||||||
* minimize surprise and keep the syntax consistent.
|
* minimize surprise and keep the syntax consistent.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* Increments the pointer "p" by one (multi-byte) character.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
nfa_inc(p)
|
|
||||||
char_u **p;
|
|
||||||
{
|
|
||||||
#ifdef FEAT_MBYTE
|
|
||||||
if (has_mbyte)
|
|
||||||
mb_ptr2char_adv(p);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
*p = *p + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Decrements the pointer "p" by one (multi-byte) character.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
nfa_dec(p)
|
|
||||||
char_u **p;
|
|
||||||
{
|
|
||||||
#ifdef FEAT_MBYTE
|
|
||||||
char_u *p2, *oldp;
|
|
||||||
|
|
||||||
if (has_mbyte)
|
|
||||||
{
|
|
||||||
oldp = *p;
|
|
||||||
/* Try to find the multibyte char that advances to the current
|
|
||||||
* position. */
|
|
||||||
do
|
|
||||||
{
|
|
||||||
*p = *p - 1;
|
|
||||||
p2 = *p;
|
|
||||||
mb_ptr2char_adv(&p2);
|
|
||||||
} while (p2 != oldp);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
*p = *p - 1;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse the lowest level.
|
* Parse the lowest level.
|
||||||
*
|
*
|
||||||
@ -963,7 +919,7 @@ collection:
|
|||||||
EMIT(NFA_OR);
|
EMIT(NFA_OR);
|
||||||
}
|
}
|
||||||
regparse = endp;
|
regparse = endp;
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -978,7 +934,7 @@ collection:
|
|||||||
{
|
{
|
||||||
negated = TRUE;
|
negated = TRUE;
|
||||||
glue = NFA_CONCAT;
|
glue = NFA_CONCAT;
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
}
|
}
|
||||||
if (*regparse == '-')
|
if (*regparse == '-')
|
||||||
{
|
{
|
||||||
@ -986,7 +942,7 @@ collection:
|
|||||||
EMIT(startc);
|
EMIT(startc);
|
||||||
TRY_NEG();
|
TRY_NEG();
|
||||||
EMIT_GLUE();
|
EMIT_GLUE();
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
}
|
}
|
||||||
/* Emit the OR branches for each character in the [] */
|
/* Emit the OR branches for each character in the [] */
|
||||||
emit_range = FALSE;
|
emit_range = FALSE;
|
||||||
@ -1090,7 +1046,7 @@ collection:
|
|||||||
{
|
{
|
||||||
emit_range = TRUE;
|
emit_range = TRUE;
|
||||||
startc = oldstartc;
|
startc = oldstartc;
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
continue; /* reading the end of the range */
|
continue; /* reading the end of the range */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1110,7 +1066,7 @@ collection:
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
|
|
||||||
if (*regparse == 'n')
|
if (*regparse == 'n')
|
||||||
startc = reg_string ? NL : NFA_NEWL;
|
startc = reg_string ? NL : NFA_NEWL;
|
||||||
@ -1125,7 +1081,7 @@ collection:
|
|||||||
/* TODO(RE) This needs more testing */
|
/* TODO(RE) This needs more testing */
|
||||||
startc = coll_get_char();
|
startc = coll_get_char();
|
||||||
got_coll_char = TRUE;
|
got_coll_char = TRUE;
|
||||||
nfa_dec(®parse);
|
mb_ptr_back(old_regparse, regparse);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1210,17 +1166,17 @@ collection:
|
|||||||
EMIT_GLUE();
|
EMIT_GLUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
} /* while (p < endp) */
|
} /* while (p < endp) */
|
||||||
|
|
||||||
nfa_dec(®parse);
|
mb_ptr_back(old_regparse, regparse);
|
||||||
if (*regparse == '-') /* if last, '-' is just a char */
|
if (*regparse == '-') /* if last, '-' is just a char */
|
||||||
{
|
{
|
||||||
EMIT('-');
|
EMIT('-');
|
||||||
TRY_NEG();
|
TRY_NEG();
|
||||||
EMIT_GLUE();
|
EMIT_GLUE();
|
||||||
}
|
}
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
|
|
||||||
if (extra == ADD_NL) /* \_[] also matches \n */
|
if (extra == ADD_NL) /* \_[] also matches \n */
|
||||||
{
|
{
|
||||||
@ -1231,7 +1187,7 @@ collection:
|
|||||||
|
|
||||||
/* skip the trailing ] */
|
/* skip the trailing ] */
|
||||||
regparse = endp;
|
regparse = endp;
|
||||||
nfa_inc(®parse);
|
mb_ptr_adv(regparse);
|
||||||
if (negated == TRUE)
|
if (negated == TRUE)
|
||||||
{
|
{
|
||||||
/* Mark end of negated char range */
|
/* Mark end of negated char range */
|
||||||
|
@ -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 */
|
||||||
|
/**/
|
||||||
|
1034,
|
||||||
/**/
|
/**/
|
||||||
1033,
|
1033,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user