1
0
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:
Bram Moolenaar
2013-06-14 21:15:25 +02:00
parent 580abea48a
commit c5089bb8ff
2 changed files with 11 additions and 36 deletions

View File

@@ -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;

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 */
/**/
1192,
/**/ /**/
1191, 1191,
/**/ /**/