diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-12-06 07:49:24 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-12-06 07:49:24 +0000 |
commit | 98e65d9d921ec810bbae2233b80e865e76dd8502 (patch) | |
tree | 16ce055f3f2dfcedef55c4649e5eb3d7bf707040 /thread.c | |
parent | 0cd28199e50039e9425f10b880c436d3ecacde0b (diff) | |
download | ruby-98e65d9d921ec810bbae2233b80e865e76dd8502.tar.gz |
Prefer rb_check_arity when 0 or 1 arguments
Especially over checking argc then calling rb_scan_args just to
raise an ArgumentError.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 38 |
1 files changed, 18 insertions, 20 deletions
@@ -1111,19 +1111,18 @@ thread_join_m(int argc, VALUE *argv, VALUE self) VALUE limit; rb_hrtime_t rel, *to = 0; - rb_scan_args(argc, argv, "01", &limit); - /* * This supports INFINITY and negative values, so we can't use * rb_time_interval right now... */ - switch (TYPE(limit)) { - case T_NIL: break; - case T_FIXNUM: + if (!rb_check_arity(argc, 0, 1) || NIL_P(argv[0])) { + /* unlimited */ + } + else if (FIXNUM_P(limit = argv[0])) { rel = rb_sec2hrtime(NUM2TIMET(limit)); to = &rel; - break; - default: + } + else { to = double2hrtime(&rel, rb_num2dbl(limit)); } @@ -2041,20 +2040,19 @@ rb_thread_pending_interrupt_p(int argc, VALUE *argv, VALUE target_thread) if (rb_threadptr_pending_interrupt_empty_p(target_th)) { return Qfalse; } + if (rb_check_arity(argc, 0, 1)) { + VALUE err = argv[0]; + if (!rb_obj_is_kind_of(err, rb_cModule)) { + rb_raise(rb_eTypeError, "class or module required for rescue clause"); + } + if (rb_threadptr_pending_interrupt_include_p(target_th, err)) { + return Qtrue; + } + else { + return Qfalse; + } + } else { - if (argc == 1) { - VALUE err; - rb_scan_args(argc, argv, "01", &err); - if (!rb_obj_is_kind_of(err, rb_cModule)) { - rb_raise(rb_eTypeError, "class or module required for rescue clause"); - } - if (rb_threadptr_pending_interrupt_include_p(target_th, err)) { - return Qtrue; - } - else { - return Qfalse; - } - } return Qtrue; } } |