Skip to content

Commit 177c29c

Browse files
committed
updated for version 7.3.1192
Problem: Valgrind reports errors when using backreferences. (Dominique Pelle) Solution: Do not check the end of submatches.
1 parent 6f5b46c commit 177c29c

File tree

2 files changed

+11
-36
lines changed

2 files changed

+11
-36
lines changed

src/regexp_nfa.c

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3612,7 +3612,7 @@ copy_sub_off(to, from)
36123612
}
36133613

36143614
/*
3615-
* Return TRUE if "sub1" and "sub2" have the same positions.
3615+
* Return TRUE if "sub1" and "sub2" have the same start positions.
36163616
*/
36173617
static int
36183618
sub_equal(sub1, sub2)
@@ -3621,71 +3621,44 @@ sub_equal(sub1, sub2)
36213621
{
36223622
int i;
36233623
int todo;
3624-
linenr_T s1, e1;
3625-
linenr_T s2, e2;
3626-
char_u *sp1, *ep1;
3627-
char_u *sp2, *ep2;
3624+
linenr_T s1;
3625+
linenr_T s2;
3626+
char_u *sp1;
3627+
char_u *sp2;
36283628

36293629
todo = sub1->in_use > sub2->in_use ? sub1->in_use : sub2->in_use;
36303630
if (REG_MULTI)
36313631
{
36323632
for (i = 0; i < todo; ++i)
36333633
{
36343634
if (i < sub1->in_use)
3635-
{
36363635
s1 = sub1->list.multi[i].start.lnum;
3637-
e1 = sub1->list.multi[i].end.lnum;
3638-
}
36393636
else
3640-
{
36413637
s1 = 0;
3642-
e1 = 0;
3643-
}
36443638
if (i < sub2->in_use)
3645-
{
36463639
s2 = sub2->list.multi[i].start.lnum;
3647-
e2 = sub2->list.multi[i].end.lnum;
3648-
}
36493640
else
3650-
{
36513641
s2 = 0;
3652-
e2 = 0;
3653-
}
3654-
if (s1 != s2 || e1 != e2)
3642+
if (s1 != s2)
36553643
return FALSE;
36563644
if (s1 != 0 && sub1->list.multi[i].start.col
36573645
!= sub2->list.multi[i].start.col)
36583646
return FALSE;
3659-
if (e1 != 0 && sub1->list.multi[i].end.col
3660-
!= sub2->list.multi[i].end.col)
3661-
return FALSE;
36623647
}
36633648
}
36643649
else
36653650
{
36663651
for (i = 0; i < todo; ++i)
36673652
{
36683653
if (i < sub1->in_use)
3669-
{
36703654
sp1 = sub1->list.line[i].start;
3671-
ep1 = sub1->list.line[i].end;
3672-
}
36733655
else
3674-
{
36753656
sp1 = NULL;
3676-
ep1 = NULL;
3677-
}
36783657
if (i < sub2->in_use)
3679-
{
36803658
sp2 = sub2->list.line[i].start;
3681-
ep2 = sub2->list.line[i].end;
3682-
}
36833659
else
3684-
{
36853660
sp2 = NULL;
3686-
ep2 = NULL;
3687-
}
3688-
if (sp1 != sp2 || ep1 != ep2)
3661+
if (sp1 != sp2)
36893662
return FALSE;
36903663
}
36913664
}
@@ -3735,8 +3708,8 @@ has_state_with_pos(l, state, subs)
37353708
if (thread->state->id == state->id
37363709
&& sub_equal(&thread->subs.norm, &subs->norm)
37373710
#ifdef FEAT_SYN_HL
3738-
&& (!nfa_has_zsubexpr ||
3739-
sub_equal(&thread->subs.synt, &subs->synt))
3711+
&& (!nfa_has_zsubexpr
3712+
|| sub_equal(&thread->subs.synt, &subs->synt))
37403713
#endif
37413714
)
37423715
return TRUE;

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,8 @@ static char *(features[]) =
728728

729729
static int included_patches[] =
730730
{ /* Add new patch number below this line */
731+
/**/
732+
1192,
731733
/**/
732734
1191,
733735
/**/

0 commit comments

Comments
 (0)