Make pending_interrupt?(Exception) work

A patch from katsu (Katsuhiro Ueno)

[Bug #19110]
This commit is contained in:
Yusuke Endoh 2022-11-08 13:35:37 +09:00
Родитель 558137d5f3
Коммит c3de7a3c58
2 изменённых файлов: 9 добавлений и 1 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -1922,7 +1922,7 @@ rb_threadptr_pending_interrupt_include_p(rb_thread_t *th, VALUE err)
int i;
for (i=0; i<RARRAY_LEN(th->pending_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;
}
}