forked from aniani/vim
updated for version 7.3.1192
Problem: Valgrind reports errors when using backreferences. (Dominique Pelle) Solution: Do not check the end of submatches.
This commit is contained in:
@@ -3612,7 +3612,7 @@ copy_sub_off(to, from)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return TRUE if "sub1" and "sub2" have the same positions.
|
* Return TRUE if "sub1" and "sub2" have the same start positions.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
sub_equal(sub1, sub2)
|
sub_equal(sub1, sub2)
|
||||||
@@ -3621,10 +3621,10 @@ sub_equal(sub1, sub2)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int todo;
|
int todo;
|
||||||
linenr_T s1, e1;
|
linenr_T s1;
|
||||||
linenr_T s2, e2;
|
linenr_T s2;
|
||||||
char_u *sp1, *ep1;
|
char_u *sp1;
|
||||||
char_u *sp2, *ep2;
|
char_u *sp2;
|
||||||
|
|
||||||
todo = sub1->in_use > sub2->in_use ? sub1->in_use : sub2->in_use;
|
todo = sub1->in_use > sub2->in_use ? sub1->in_use : sub2->in_use;
|
||||||
if (REG_MULTI)
|
if (REG_MULTI)
|
||||||
@@ -3632,33 +3632,18 @@ sub_equal(sub1, sub2)
|
|||||||
for (i = 0; i < todo; ++i)
|
for (i = 0; i < todo; ++i)
|
||||||
{
|
{
|
||||||
if (i < sub1->in_use)
|
if (i < sub1->in_use)
|
||||||
{
|
|
||||||
s1 = sub1->list.multi[i].start.lnum;
|
s1 = sub1->list.multi[i].start.lnum;
|
||||||
e1 = sub1->list.multi[i].end.lnum;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
s1 = 0;
|
s1 = 0;
|
||||||
e1 = 0;
|
|
||||||
}
|
|
||||||
if (i < sub2->in_use)
|
if (i < sub2->in_use)
|
||||||
{
|
|
||||||
s2 = sub2->list.multi[i].start.lnum;
|
s2 = sub2->list.multi[i].start.lnum;
|
||||||
e2 = sub2->list.multi[i].end.lnum;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
s2 = 0;
|
s2 = 0;
|
||||||
e2 = 0;
|
if (s1 != s2)
|
||||||
}
|
|
||||||
if (s1 != s2 || e1 != e2)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (s1 != 0 && sub1->list.multi[i].start.col
|
if (s1 != 0 && sub1->list.multi[i].start.col
|
||||||
!= sub2->list.multi[i].start.col)
|
!= sub2->list.multi[i].start.col)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (e1 != 0 && sub1->list.multi[i].end.col
|
|
||||||
!= sub2->list.multi[i].end.col)
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -3666,26 +3651,14 @@ sub_equal(sub1, sub2)
|
|||||||
for (i = 0; i < todo; ++i)
|
for (i = 0; i < todo; ++i)
|
||||||
{
|
{
|
||||||
if (i < sub1->in_use)
|
if (i < sub1->in_use)
|
||||||
{
|
|
||||||
sp1 = sub1->list.line[i].start;
|
sp1 = sub1->list.line[i].start;
|
||||||
ep1 = sub1->list.line[i].end;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
sp1 = NULL;
|
sp1 = NULL;
|
||||||
ep1 = NULL;
|
|
||||||
}
|
|
||||||
if (i < sub2->in_use)
|
if (i < sub2->in_use)
|
||||||
{
|
|
||||||
sp2 = sub2->list.line[i].start;
|
sp2 = sub2->list.line[i].start;
|
||||||
ep2 = sub2->list.line[i].end;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
sp2 = NULL;
|
sp2 = NULL;
|
||||||
ep2 = NULL;
|
if (sp1 != sp2)
|
||||||
}
|
|
||||||
if (sp1 != sp2 || ep1 != ep2)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3735,8 +3708,8 @@ has_state_with_pos(l, state, subs)
|
|||||||
if (thread->state->id == state->id
|
if (thread->state->id == state->id
|
||||||
&& sub_equal(&thread->subs.norm, &subs->norm)
|
&& sub_equal(&thread->subs.norm, &subs->norm)
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
&& (!nfa_has_zsubexpr ||
|
&& (!nfa_has_zsubexpr
|
||||||
sub_equal(&thread->subs.synt, &subs->synt))
|
|| sub_equal(&thread->subs.synt, &subs->synt))
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@@ -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 */
|
||||||
|
/**/
|
||||||
|
1192,
|
||||||
/**/
|
/**/
|
||||||
1191,
|
1191,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user