diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-08-22 02:46:16 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-08-22 02:46:16 +0000 |
commit | 066e9a8b4ac36907f8e7915b5f94fdc7ca851de0 (patch) | |
tree | ab4755a81c14142791da4fd3bbe15413b1ee31c0 /vm_insnhelper.c | |
parent | 2f3eef8ee06492817804536210ff6d74e0d467c4 (diff) |
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.c | 6 |
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); |