updated for version 7.4.623
Problem:    Crash with pattern: \(\)\{80000}  (Dominique Pelle)
Solution:   When the max limit is large fall back to the old engine.
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 77c7870..2245351 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -2034,9 +2034,10 @@
 	    }
 
 	    /* The engine is very inefficient (uses too many states) when the
-	     * maximum is much larger than the minimum.  Bail out if we can
-	     * use the other engine. */
-	    if ((nfa_re_flags & RE_AUTO) && maxval > minval + 200)
+	     * maximum is much larger than the minimum and when the maximum is
+	     * large.  Bail out if we can use the other engine. */
+	    if ((nfa_re_flags & RE_AUTO)
+				   && (maxval > minval + 200 || maxval > 500))
 		return FAIL;
 
 	    /* Ignore previous call to nfa_regatom() */
@@ -4254,7 +4255,6 @@
  * Add "state" and possibly what follows to state list ".".
  * Returns "subs_arg", possibly copied into temp_subs.
  */
-
     static regsubs_T *
 addstate(l, state, subs_arg, pim, off)
     nfa_list_T		*l;	    /* runtime state list */
@@ -4392,6 +4392,7 @@
 		    subs = &temp_subs;
 		}
 
+		/* TODO: check for vim_realloc() returning NULL. */
 		l->t = vim_realloc(l->t, newlen * sizeof(nfa_thread_T));
 		l->len = newlen;
 	    }