From c5fe4c674107d0a4d5ee804c12f460fe874e9fda Mon Sep 17 00:00:00 2001 From: Arshia Ghafoori Date: Fri, 20 Dec 2024 11:24:10 +0000 Subject: [PATCH] Fix sleep(0) resulting in infinite wait --- libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c b/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c index d15b23ed..1e8dacfa 100644 --- a/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c +++ b/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c @@ -27,6 +27,11 @@ int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, if (!timespec_to_timestamp_exact(rqtp, &sub.u.u.clock.timeout)) return EINVAL; + // a zero timeout is an infinite wait, while 1 is used to + // wait 0 seconds + if (sub.u.u.clock.timeout == 0) + sub.u.u.clock.timeout = 1; + // Block until polling event is triggered. __wasi_size_t nevents; __wasi_event_t ev;