diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index f6156a16fd..8ca23e7d02 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -1515,4 +1515,12 @@ q.pop end }; end + + def test_pending_interrupt? + t = Thread.handle_interrupt(Exception => :never) { Thread.new { Thread.stop } } + t.raise(StandardError) + assert_equal(true, t.pending_interrupt?) + assert_equal(true, t.pending_interrupt?(Exception)) + assert_equal(false, t.pending_interrupt?(ArgumentError)) + end end diff --git a/thread.c b/thread.c index d8925e618e..624c070877 100644 --- a/thread.c +++ b/thread.c @@ -1922,7 +1922,7 @@ rb_threadptr_pending_interrupt_include_p(rb_thread_t *th, VALUE err) int i; for (i=0; ipending_interrupt_queue); i++) { VALUE e = RARRAY_AREF(th->pending_interrupt_queue, i); - if (rb_class_inherited_p(e, err)) { + if (rb_obj_is_kind_of(e, err)) { return TRUE; } }