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
index c5386ce..7e9b04c 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -3795,14 +3795,8 @@
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 @@
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 @@
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 @@
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
index 1f9eda6..4b2b2f6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1154,
+/**/
1153,
/**/
1152,