]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.1121 v7.3.1121
authorBram Moolenaar <Bram@vim.org>
Wed, 5 Jun 2013 14:51:57 +0000 (16:51 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 5 Jun 2013 14:51:57 +0000 (16:51 +0200)
Problem:    New regexp engine: adding states that are not used.
Solution:   Don't add the states.

src/regexp_nfa.c
src/version.c

index 5873cfcc10282da2e17e41a0deb3a809f9e8933a..c7747eac392f1c1c9b9d43c83625f2059991acb8 100644 (file)
@@ -3169,6 +3169,7 @@ addstate(l, state, subs, off)
        case NFA_SPLIT:
        case NFA_NOT:
        case NFA_NOPEN:
+       case NFA_SKIP_CHAR:
        case NFA_NCLOSE:
        case NFA_MCLOSE:
        case NFA_MCLOSE1:
@@ -3192,6 +3193,7 @@ addstate(l, state, subs, off)
        case NFA_ZCLOSE8:
        case NFA_ZCLOSE9:
 #endif
+       case NFA_ZEND:
            /* These nodes are not added themselves but their "out" and/or
             * "out1" may be added below.  */
            break;
@@ -3218,6 +3220,7 @@ addstate(l, state, subs, off)
        case NFA_ZOPEN8:
        case NFA_ZOPEN9:
 #endif
+       case NFA_ZSTART:
            /* These nodes do not need to be added, but we need to bail out
             * when it was tried to be added to this list before. */
            if (state->lastlist[nfa_ll_index] == l->id)
@@ -4362,10 +4365,6 @@ nfa_regmatch(prog, start, submatch, m)
 
            case NFA_START_INVISIBLE:
            case NFA_START_INVISIBLE_BEFORE:
-               /* If invisible match has a higher chance to fail, do it
-                * right away.  Otherwise postpone it until what follows is
-                * matching and causes addstate(nextlist, ..) to be called.
-                * This is indicated by the "pim" field. */
                {
                    nfa_pim_T *pim;
                    int cout = t->state->out1->out->c;
@@ -4863,12 +4862,11 @@ nfa_regmatch(prog, start, submatch, m)
                        log_subsexpr(&nextlist->t[nextlist->n - 1].subs);
 #endif
                    }
-
                }
                break;
              }
            case NFA_SKIP:
-             /* charater of previous matching \1 .. \9 */
+             /* character of previous matching \1 .. \9  or \@> */
              if (t->count - clen <= 0)
              {
                  /* end of match, go to what follows */
@@ -4892,12 +4890,6 @@ nfa_regmatch(prog, start, submatch, m)
              }
              break;
 
-           case NFA_SKIP_CHAR:
-           case NFA_ZSTART:
-           case NFA_ZEND:
-               /* TODO: should not happen? */
-               break;
-
            case NFA_LNUM:
            case NFA_LNUM_GT:
            case NFA_LNUM_LT:
index f6585e1f26b47eb8ad62901773609c8856ca3b85..e74e271dabb80755dae2243af5854e448b43e618 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1121,
 /**/
     1120,
 /**/