diff --git a/ChangeLog b/ChangeLog index bccfe4b514..845906fbb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue May 27 21:53:49 2008 Nobuyoshi Nakada + + * thread.c (rb_thread_execute_interrupts): delay interrupts during + raising exceptions. [ruby-dev:34855] + Tue May 27 20:18:30 2008 Akinori MUSHA * array.c (rb_ary_slice_bang): Return an empty array instead of diff --git a/thread.c b/thread.c index 5b48721e71..01007b1862 100644 --- a/thread.c +++ b/thread.c @@ -814,6 +814,7 @@ thread_s_pass(VALUE klass) void rb_thread_execute_interrupts(rb_thread_t *th) { + if (th->raised_flag) return; while (th->interrupt_flag) { int status = th->status; th->status = THREAD_RUNNABLE;