# HG changeset patch # User Bram Moolenaar # Date 1370791534 -7200 # Node ID 6419ee8098c80f0418081c73b790b09c61f13c3a # Parent fd09a5342efdf97d114f9200f365084d9dcff3b7 updated for version 7.3.1154 Problem: New regexp_nfa engine: Uneccessary code. Solution: Remove uneccessary code. diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -3795,14 +3795,8 @@ addstate(l, state, subs, pim, off) int did_print = FALSE; #endif - if (l == NULL || state == NULL) - return; - switch (state->c) { - case NFA_SPLIT: - case NFA_NOPEN: - case NFA_SKIP_CHAR: case NFA_NCLOSE: case NFA_MCLOSE: case NFA_MCLOSE1: @@ -3827,6 +3821,9 @@ addstate(l, state, subs, pim, off) case NFA_ZCLOSE9: #endif case NFA_ZEND: + case NFA_SPLIT: + case NFA_NOPEN: + case NFA_SKIP_CHAR: /* These nodes are not added themselves but their "out" and/or * "out1" may be added below. */ break; @@ -3889,12 +3886,14 @@ skip_add: return; } + /* Do not add the state again when it exists with the same + * positions. */ if (has_state_with_pos(l, state, subs)) goto skip_add; } - /* when there are backreferences or look-behind matches the number - * of states may be (a lot) bigger */ + /* When there are backreferences the number of states may be (a + * lot) bigger than anticipated. */ if (nfa_has_backref && l->n == l->len) { int newlen = l->len * 3 / 2 + 50; @@ -3985,8 +3984,8 @@ skip_add: sub = &subs->norm; } - /* Set the position (with "off") in the subexpression. Save and - * restore it when it was in use. Otherwise fill any gap. */ + /* Set the position (with "off" added) in the subexpression. Save + * and restore it when it was in use. Otherwise fill any gap. */ save_ptr = NULL; if (REG_MULTI) { diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1154, +/**/ 1153, /**/ 1152,