updated for version 7.3.1207
Problem:    New regexp engine: no match found on "#if FOO". (Lech Lorens)
Solution:   When adding a state gets skipped don't adjust the index.
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 5414465..47d7030 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -4210,6 +4210,8 @@
 
     /* re-order to put the new state at the current position */
     count = l->n - tlen;
+    if (count == 0)
+	return; /* no state got added */
     if (count == 1)
     {
 	/* overwrite the current state */
diff --git a/src/testdir/test64.in b/src/testdir/test64.in
index ad11c3c..0cabcdf 100644
--- a/src/testdir/test64.in
+++ b/src/testdir/test64.in
@@ -408,6 +408,8 @@
 :"""" Requiring lots of states.
 :call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', " 12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012", "1234-"])
 :"
+:"""" Skip adding state twice
+:call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO'])
 :"
 :"""" Run the tests
 :"
diff --git a/src/testdir/test64.ok b/src/testdir/test64.ok
index 48694fb..fda5892 100644
--- a/src/testdir/test64.ok
+++ b/src/testdir/test64.ok
@@ -913,6 +913,9 @@
 OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
 OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
 OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
+OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
+OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
+OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
 multi-line tests
 OK 0 - ^.\(.\).\_..\1.
 OK 1 - ^.\(.\).\_..\1.
diff --git a/src/version.c b/src/version.c
index 85147e8..3374e16 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1207,
+/**/
     1206,
 /**/
     1205,