diff options
author | nicholas a. evans <nicholas.evans@gmail.com> | 2020-06-09 00:30:43 -0400 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-06-09 18:57:17 +0900 |
commit | b6bae0ec4433bcea6ba94a50de344c2e3b90fee9 (patch) | |
tree | f3e38c24b533d0a590b129d09f77cc9c0ecf402d /process.c | |
parent | 964829495cbf7bff6ca8a03b6d90f81de4d0efba (diff) |
Return seconds slept after Thread.scheduler wait_sleep
Kernel#sleep should still return seconds slept, even when using a
Thread.scheduler. The return value of Scheduler#wait_sleep can be
ignored.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3198
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -4920,20 +4920,20 @@ rb_f_spawn(int argc, VALUE *argv, VALUE _) static VALUE rb_f_sleep(int argc, VALUE *argv, VALUE _) { + time_t beg = time(0); VALUE scheduler = rb_current_thread_scheduler(); if (scheduler != Qnil) { - VALUE result = rb_funcallv(scheduler, rb_intern("wait_sleep"), argc, argv); - return RTEST(result); - } - - time_t beg = time(0); - if (argc == 0) { - rb_thread_sleep_forever(); + rb_funcallv(scheduler, rb_intern("wait_sleep"), argc, argv); } else { - rb_check_arity(argc, 0, 1); - rb_thread_wait_for(rb_time_interval(argv[0])); + if (argc == 0) { + rb_thread_sleep_forever(); + } + else { + rb_check_arity(argc, 0, 1); + rb_thread_wait_for(rb_time_interval(argv[0])); + } } time_t end = time(0) - beg; |