Mercurial > vim
changeset 21281:13b1567ae0c6 v8.2.1191
patch 8.2.1191: Vim9: crash when function calls itself
Commit: https://github.com/vim/vim/commit/985116ae0b7b3ef17e0c0ea2669068dd6b3b39c7
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jul 12 17:31:09 2020 +0200
patch 8.2.1191: Vim9: crash when function calls itself
Problem: Vim9: crash when function calls itself.
Solution: Add status UF_COMPILING. (closes https://github.com/vim/vim/issues/6441)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 12 Jul 2020 17:45:04 +0200 |
parents | fcc4b91118cf |
children | f3e3366d915b |
files | src/structs.h src/testdir/test_vim9_func.vim src/version.c src/vim9compile.c |
diffstat | 4 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/structs.h +++ b/src/structs.h @@ -1539,6 +1539,7 @@ typedef struct funccall_S funccall_T; typedef enum { UF_NOT_COMPILED, UF_TO_BE_COMPILED, + UF_COMPILING, UF_COMPILED } def_status_T;
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -999,5 +999,17 @@ func Test_silent_echo() 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