diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-10-04 11:32:16 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-10-04 11:32:16 +0000 |
| commit | 17c75817d4decdb258e4ceb5e2ae705dd80d70f2 (patch) | |
| tree | 8f2e09d2ca7299f49bd25ad410ce2dde8bc121d5 /eval.c | |
| parent | cce94d4e655ca836a1fbc87729ce3a212de85f7f (diff) | |
| download | ruby-17c75817d4decdb258e4ceb5e2ae705dd80d70f2.tar.gz ruby-17c75817d4decdb258e4ceb5e2ae705dd80d70f2.tar.xz ruby-17c75817d4decdb258e4ceb5e2ae705dd80d70f2.zip | |
* eval.c (rb_thread_interrupt, rb_thread_signal_raise): no need to
save dead thread context. (same as [ruby-dev:18322])
(ruby-bugs-ja:PR#349)
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
| -rw-r--r-- | eval.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -9001,8 +9001,10 @@ rb_thread_interrupt() if (curr_thread == main_thread) { rb_interrupt(); } - if (THREAD_SAVE_CONTEXT(curr_thread)) { - return; + if (!rb_thread_dead(curr_thread)) { + if (THREAD_SAVE_CONTEXT(curr_thread)) { + return; + } } curr_thread = main_thread; rb_thread_restore_context(curr_thread, RESTORE_INTERRUPT); @@ -9019,8 +9021,10 @@ rb_thread_signal_raise(sig) rb_raise(rb_eSignal, "SIG%s", sig); } rb_thread_ready(main_thread); - if (THREAD_SAVE_CONTEXT(curr_thread)) { - return; + if (!rb_thread_dead(curr_thread)) { + if (THREAD_SAVE_CONTEXT(curr_thread)) { + return; + } } th_signm = sig; curr_thread = main_thread; @@ -9072,8 +9076,10 @@ rb_thread_raise(argc, argv, th) rb_f_raise(argc, argv); } - if (!rb_thread_dead(curr_thread) && THREAD_SAVE_CONTEXT(curr_thread)) { - return th->thread; + if (!rb_thread_dead(curr_thread)) { + if (THREAD_SAVE_CONTEXT(curr_thread)) { + return th->thread; + } } rb_scan_args(argc, argv, "11", &th_raise_argv[0], &th_raise_argv[1]); |
