summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--thread.c11
2 files changed, 6 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f28208dbd..776d39b6c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jun 7 21:38:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_execute_interrupts): invoke ensure when
+ main thread exits.
+
Thu Jun 7 19:02:48 2007 Tanaka Akira <akr@fsij.org>
* lib/pp.rb: call original "method" method instead of redefined one.
diff --git a/thread.c b/thread.c
index 763b48ec6b..0b340632d7 100644
--- a/thread.c
+++ b/thread.c
@@ -700,16 +700,7 @@ rb_thread_execute_interrupts(rb_thread_t *th)
th->thrown_errinfo = 0;
thread_debug("rb_thread_execute_interrupts: %ld\n", err);
- if (err == eKillSignal) {
- th->errinfo = INT2FIX(TAG_FATAL);
- TH_JUMP_TAG(th, TAG_FATAL);
- }
- else if (err == eTerminateSignal) {
- /* rewind to toplevel stack */
- while (th->tag->prev) {
- th->tag = th->tag->prev;
- }
-
+ if (err == eKillSignal || err == eTerminateSignal) {
th->errinfo = INT2FIX(TAG_FATAL);
TH_JUMP_TAG(th, TAG_FATAL);
}