Problem: Vim9: crash when function calls itself.
Solution: Add status UF_COMPILING. (closes #6441)
typedef enum {
UF_NOT_COMPILED,
UF_TO_BE_COMPILED,
+ UF_COMPILING,
UF_COMPILED
} def_status_T;
call delete('XTest_silent_echo')
endfunc
+def Fibonacci(n: number): number
+ if n < 2
+ return n
+ else
+ return Fibonacci(n - 1) + Fibonacci(n - 2)
+ endif
+enddef
+
+def Test_recursive_call()
+ assert_equal(6765, Fibonacci(20))
+enddef
+
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1191,
/**/
1190,
/**/
else if (add_def_function(ufunc) == FAIL)
return FAIL;
+ ufunc->uf_def_status = UF_COMPILING;
+
CLEAR_FIELD(cctx);
cctx.ctx_ufunc = ufunc;
cctx.ctx_lnum = -1;