Problem: When 'maxfuncdepth' is set above 200 the nesting is limited to
200. (Brett Stahlman)
Solution: Allow for Ex command recursion depending on 'maxfuncdepth'.
#endif
/* It's possible to create an endless loop with ":execute", catch that
- * here. The value of 200 allows nested function calls, ":source", etc. */
- if (call_depth == 200)
+ * here. The value of 200 allows nested function calls, ":source", etc.
+ * Allow 200 or 'maxfuncdepth', whatever is larger. */
+ if (call_depth >= 200 && call_depth >= p_mfd)
{
EMSG(_("E169: Command too recursive"));
#ifdef FEAT_EVAL
delfunc g:X
unlet g:Y
endfunc
+
+func Recurse(count)
+ if a:count > 0
+ call Recurse(a:count - 1)
+ endif
+endfunc
+
+func Test_max_nesting()
+ let call_depth_here = 2
+ let ex_depth_here = 5
+ set mfd&
+
+ call Recurse(99 - call_depth_here)
+ call assert_fails('call Recurse(' . (100 - call_depth_here) . ')', 'E132:')
+
+ set mfd=210
+ call Recurse(209 - ex_depth_here)
+ call assert_fails('call Recurse(' . (210 - ex_depth_here) . ')', 'E169:')
+
+ set mfd&
+endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 137,
/**/
136,
/**/