aboutsummaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-22 02:46:16 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-22 02:46:16 +0000
commit811079a19df57072bb8e5de1576ddcd7f45bd98a (patch)
treeab4755a81c14142791da4fd3bbe15413b1ee31c0 /vm_insnhelper.c
parent621151f99d92d4957d0d250f8e1eac1be9ae2427 (diff)
downloadruby-811079a19df57072bb8e5de1576ddcd7f45bd98a.tar.gz
signal.c: fatal stack
* signal.c (check_stack_overflow): raise fatal when the last tag is in danger zone. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 9e85f38be9..ffab48419b 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -52,11 +52,11 @@ vm_stackoverflow(void)
threadptr_stack_overflow(GET_THREAD(), TRUE);
}
-NORETURN(void rb_threadptr_stack_overflow(rb_thread_t *th));
+NORETURN(void rb_threadptr_stack_overflow(rb_thread_t *th, int crit));
void
-rb_threadptr_stack_overflow(rb_thread_t *th)
+rb_threadptr_stack_overflow(rb_thread_t *th, int crit)
{
- if (rb_during_gc()) {
+ if (crit || rb_during_gc()) {
th->ec.raised_flag = RAISED_STACKOVERFLOW;
th->ec.errinfo = th->vm->special_exceptions[ruby_error_stackfatal];
TH_JUMP_TAG(th, TAG_RAISE);