summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-12-05 07:16:08 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2012-12-05 07:16:08 -0800
commit40daee12cfbf6dac4421f47c9c953788985fe238 (patch)
tree32e8908c65d3b08a4e39f56c902b02682cc314ee /test
parent222bd9722398709c42cd4739ea53832e05d7c652 (diff)
parent039679f1af32af9c285ce1fff2d9e8fd52af51eb (diff)
downloadmruby-40daee12cfbf6dac4421f47c9c953788985fe238.tar.gz
mruby-40daee12cfbf6dac4421f47c9c953788985fe238.zip
Merge pull request #567 from beoran/beoran_stack_overflow_fix
Keep stack depth and allocation better under control and fix crash on infinite recursion.
Diffstat (limited to 'test')
-rw-r--r--test/t/exception.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/t/exception.rb b/test/t/exception.rb
index aa707c1b1..a2e6acc07 100644
--- a/test/t/exception.rb
+++ b/test/t/exception.rb
@@ -290,3 +290,26 @@ end
assert('Exception#inspect without message') do
Exception.new.inspect
end
+
+# very deeply recursive function that stil returns albeit very deeply so
+$test_infinite_recursion = 0
+TEST_INFINITE_RECURSION_MAX = 100000
+def test_infinite_recursion
+ $test_infinite_recursion += 1
+ if $test_infinite_recursion > TEST_INFINITE_RECURSION_MAX
+ return $test_infinite_recursion
+ end
+ test_infinite_recursion
+end
+
+assert('Infinite recursion should result in an exception being raised') do
+ a = begin
+ test_infinite_recursion
+ rescue
+ :ok
+ end
+ # OK if an exception was caught, otherwise a number will be stored in a
+ a == :ok
+end
+
+