diff options
author | Yusuke Endoh <mame@ruby-lang.org> | 2022-11-08 13:35:37 +0900 |
---|---|---|
committer | Yusuke Endoh <mame@ruby-lang.org> | 2022-11-09 12:25:35 +0900 |
commit | c3de7a3c58bf9a138ff8720ed56c0045d2b8e01d (patch) | |
tree | fa94950f00752f88d9284d5fc34071251168b514 | |
parent | 558137d5f3b77294949bd042bb99ae12d37faa2f (diff) | |
download | ruby-c3de7a3c58bf9a138ff8720ed56c0045d2b8e01d.tar.gz |
Make pending_interrupt?(Exception) work
A patch from katsu (Katsuhiro Ueno)
[Bug #19110]
-rw-r--r-- | test/ruby/test_thread.rb | 8 | ||||
-rw-r--r-- | thread.c | 2 |
2 files changed, 9 insertions, 1 deletions
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 @@ -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; } } |