summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--eval.c18
2 files changed, 19 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 7d2233b34a..eae64fc3b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Oct 4 20:25:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * 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)
+
Fri Oct 4 13:05:58 2002 WATANABE Hirofumi <eban@ruby-lang.org>
* configure.in (RUBY_PROG_GNU_LD): check whether the linker is GNU ld.
@@ -279,6 +285,7 @@ Sat Sep 21 23:28:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
Sat Sep 21 22:23:41 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* eval.c (rb_thread_raise): no need to save dead thread context.
+ [ruby-dev:18322]
Fri Sep 20 23:02:01 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
diff --git a/eval.c b/eval.c
index 9a81419ea8..b5a09f5c4c 100644
--- a/eval.c
+++ b/eval.c
@@ -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]);