diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-04-27 15:00:41 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-04-27 15:00:41 +0000 |
commit | f93e39261c8f44cc4dd77ac4802aa913561b5157 (patch) | |
tree | cca9c39b7da747f6521a064aba43d7bb7211b430 /eval.c | |
parent | e59b9d35fcd58331928aa1f62fe48287b0c643e2 (diff) | |
download | ruby-f93e39261c8f44cc4dd77ac4802aa913561b5157.tar.gz |
* eval.c (ruby_cleanup): add exception guard around code running
signal handler (of r27513). Absence of the guard made
bootstraptest/test_thread.rb fail sometimes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27516 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -132,7 +132,11 @@ ruby_cleanup(volatile int ex) rb_threadptr_interrupt(th); rb_threadptr_check_signal(th); - RUBY_VM_CHECK_INTS(); + PUSH_TAG(); + if ((state = EXEC_TAG()) == 0) { + SAVE_ROOT_JMPBUF(th, { RUBY_VM_CHECK_INTS(); }); + } + POP_TAG(); errs[1] = th->errinfo; th->safe_level = 0; |