diff options
author | Jo-Philipp Wich <jo@mein.io> | 2020-10-18 17:46:42 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2020-10-18 18:09:11 +0200 |
commit | d815d0e0ee00de41e792246ba1baddf1d68b0f59 (patch) | |
tree | 20d31fdfc9f4a531cc32c27fec7c5f701840899e /tests | |
parent | 279d0b5d27f406bb60cb7e9ea2222a3c83eb7980 (diff) |
eval: fix segmentation faults with self-invoking functions
Store the invocation scope and function context in the call stack frame
and not in the function object to properly deal with recursive invocations.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/02_runtime/06_recursion | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/02_runtime/06_recursion b/tests/02_runtime/06_recursion new file mode 100644 index 0000000..e707c86 --- /dev/null +++ b/tests/02_runtime/06_recursion @@ -0,0 +1,35 @@ +Testing recursive invocations. + + +1. Testing recursive invocation. + +-- Expect stdout -- +1 +2 +4 +8 +16 +32 +64 +128 +256 +512 +1024 +2048 +4096 +8192 +16384 +-- End -- + +-- Testcase -- +{% + function test(x) { + print(x, "\n"); + + if (x < 10000) + test(x * 2); + } + + test(1); +%} +-- End -- |