From 86d38b452005a9168eb2b5eaffd5fb3465313436 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Fri, 10 Mar 2023 16:40:05 +1300 Subject: Accept `sleep(nil)` as sleep forever. (#7484) --- process.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'process.c') diff --git a/process.c b/process.c index 2c29af787b..705483bdc4 100644 --- a/process.c +++ b/process.c @@ -4918,6 +4918,9 @@ rb_f_spawn(int argc, VALUE *argv, VALUE _) * thread calls Thread#run. Called without an argument, sleep() * will sleep forever. * + * If the +duration+ is not supplied, or is +nil+, the thread sleeps forever. + * Threads in this state may still be interrupted by other threads. + * * Time.new #=> 2008-03-08 19:56:19 +0900 * sleep 1.2 #=> 1 * Time.new #=> 2008-03-08 19:56:20 +0900 @@ -4935,7 +4938,7 @@ rb_f_sleep(int argc, VALUE *argv, VALUE _) rb_fiber_scheduler_kernel_sleepv(scheduler, argc, argv); } else { - if (argc == 0) { + if (argc == 0 || (argc == 1 && NIL_P(argv[0]))) { rb_thread_sleep_forever(); } else { -- cgit v1.2.1