]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.1192 v7.3.1192
authorBram Moolenaar <Bram@vim.org>
Fri, 14 Jun 2013 19:15:25 +0000 (21:15 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 14 Jun 2013 19:15:25 +0000 (21:15 +0200)
Problem:    Valgrind reports errors when using backreferences. (Dominique
            Pelle)
Solution:   Do not check the end of submatches.

src/regexp_nfa.c
src/version.c

index 702095548ff2b0a7fec98d7e7f354077da193dd0..7a335336d394a1ba7eab9471bf9dd0e9e7cb1e2f 100644 (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
 sub_equal(sub1, sub2)
@@ -3621,10 +3621,10 @@ sub_equal(sub1, sub2)
 {
     int                i;
     int                todo;
-    linenr_T   s1, e1;
-    linenr_T   s2, e2;
-    char_u     *sp1, *ep1;
-    char_u     *sp2, *ep2;
+    linenr_T   s1;
+    linenr_T   s2;
+    char_u     *sp1;
+    char_u     *sp2;
 
     todo = sub1->in_use > sub2->in_use ? sub1->in_use : sub2->in_use;
     if (REG_MULTI)
@@ -3632,33 +3632,18 @@ sub_equal(sub1, sub2)
        for (i = 0; i < todo; ++i)
        {
            if (i < sub1->in_use)
-           {
                s1 = sub1->list.multi[i].start.lnum;
-               e1 = sub1->list.multi[i].end.lnum;
-           }
            else
-           {
                s1 = 0;
-               e1 = 0;
-           }
            if (i < sub2->in_use)
-           {
                s2 = sub2->list.multi[i].start.lnum;
-               e2 = sub2->list.multi[i].end.lnum;
-           }
            else
-           {
                s2 = 0;
-               e2 = 0;
-           }
-           if (s1 != s2 || e1 != e2)
+           if (s1 != s2)
                return FALSE;
            if (s1 != 0 && sub1->list.multi[i].start.col
                                             != sub2->list.multi[i].start.col)
                return FALSE;
-           if (e1 != 0 && sub1->list.multi[i].end.col
-                                            != sub2->list.multi[i].end.col)
-               return FALSE;
        }
     }
     else
@@ -3666,26 +3651,14 @@ sub_equal(sub1, sub2)
        for (i = 0; i < todo; ++i)
        {
            if (i < sub1->in_use)
-           {
                sp1 = sub1->list.line[i].start;
-               ep1 = sub1->list.line[i].end;
-           }
            else
-           {
                sp1 = NULL;
-               ep1 = NULL;
-           }
            if (i < sub2->in_use)
-           {
                sp2 = sub2->list.line[i].start;
-               ep2 = sub2->list.line[i].end;
-           }
            else
-           {
                sp2 = NULL;
-               ep2 = NULL;
-           }
-           if (sp1 != sp2 || ep1 != ep2)
+           if (sp1 != sp2)
                return FALSE;
        }
     }
@@ -3735,8 +3708,8 @@ has_state_with_pos(l, state, subs)
        if (thread->state->id == state->id
                && sub_equal(&thread->subs.norm, &subs->norm)
 #ifdef FEAT_SYN_HL
-               && (!nfa_has_zsubexpr ||
-                      sub_equal(&thread->subs.synt, &subs->synt))
+               && (!nfa_has_zsubexpr
+                               || sub_equal(&thread->subs.synt, &subs->synt))
 #endif
                              )
            return TRUE;
index 8168890d2529988f2634f146f88ca6d1f192bb72..28f680dfd224099da2f2afbb59ee4d2ec029e6da 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1192,
 /**/
     1191,
 /**/