From: Samuel Thibault Date: Sun, 25 Aug 2024 01:35:29 +0000 (+0200) Subject: mach: Fix bogus negative return X-Git-Tag: glibc-2.41~715 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f071795d80255755c4f3d2bdc6c55e67753b52b9;p=thirdparty%2Fglibc.git mach: Fix bogus negative return One can be very unlucky to call time_now first just before a second switch, and mach_msg sleep just a bit more enough for the second time_now call to count one second too many (or even more if scheduling is really unlucky). So we have to protect against returning a bogus negative value in such case. --- diff --git a/sysdeps/mach/sleep.c b/sysdeps/mach/sleep.c index 572be150bc..aa750c13c5 100644 --- a/sysdeps/mach/sleep.c +++ b/sysdeps/mach/sleep.c @@ -43,6 +43,9 @@ __sleep (unsigned int seconds) after = time_now (); __mach_port_destroy (__mach_task_self (), recv); + if (after - before > seconds) + return 0; + return seconds - (after - before); } weak_alias (__sleep, sleep)