diff options
Diffstat (limited to 'tests/012/stack.tl')
-rw-r--r-- | tests/012/stack.tl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/012/stack.tl b/tests/012/stack.tl new file mode 100644 index 00000000..a8d06487 --- /dev/null +++ b/tests/012/stack.tl @@ -0,0 +1,31 @@ +(load "../common") + +(defun recur () (recur)) + +(defmacro so (expr) + ^(catch ,expr + (stack-overflow (exc) :so))) + +(test (so (recur)) :so) + +(test (let ((pid (fork))) + (cond + ((zerop pid) (set-stack-limit 0) (recur)) + (t (let ((status (wait pid))) + (w-ifsignaled status))))) + t) + +(defmacro infexp () + ^(foo (infexp))) + +(test (so (expand '(infexp))) :so) + +(defvarl orig (get-stack-limit)) + +(mvtest + (set-stack-limit nil) orig + (set-stack-limit orig) nil + (set-stack-limit 0) orig + (set-stack-limit orig) nil + (set-stack-limit 65536) orig + (set-stack-limit orig) 65536) |