summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2020-10-18 17:46:42 +0200
committerJo-Philipp Wich <jo@mein.io>2020-10-18 18:09:11 +0200
commitd815d0e0ee00de41e792246ba1baddf1d68b0f59 (patch)
tree20d31fdfc9f4a531cc32c27fec7c5f701840899e /tests
parent279d0b5d27f406bb60cb7e9ea2222a3c83eb7980 (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_recursion35
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 --