patch 9.0.2030: no max callback recursion limit
Problem: no max callback recursion limit
Solution: bail out, if max call recursion for callback functions
has been reached.
This checks the 'maxfuncdepth' setting and throws E169 when a callback
function recursively calls itself.
closes: #13337
closes: #13339
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/userfunc.c b/src/userfunc.c
index db16b68..a3b8bdc 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3583,6 +3583,13 @@
if (callback->cb_name == NULL || *callback->cb_name == NUL)
return FAIL;
+
+ if (callback_depth > p_mfd)
+ {
+ emsg(_(e_command_too_recursive));
+ return FAIL;
+ }
+
CLEAR_FIELD(funcexe);
funcexe.fe_evaluate = TRUE;
funcexe.fe_partial = callback->cb_partial;