about summary refs log tree commit diff
diff options
context:
space:
mode:
author王宇逸 <Strawberry_Str@hotmail.com>2025-04-24 01:25:46 +0800
committer王宇逸 <Strawberry_Str@hotmail.com>2025-04-24 01:25:46 +0800
commitd2120e653e9acca9ab6f3053d0a173fa285fba04 (patch)
tree022435d64e5eb59d3cf2b88fbb61178d1f194466
parentbe181dd75c83d72fcc95538e235768bc367b76b9 (diff)
downloadrust-d2120e653e9acca9ab6f3053d0a173fa285fba04.tar.gz
rust-d2120e653e9acca9ab6f3053d0a173fa285fba04.zip
Work around cygwin issue on timeout
-rw-r--r--library/std/src/sys/pal/unix/sync/condvar.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/library/std/src/sys/pal/unix/sync/condvar.rs b/library/std/src/sys/pal/unix/sync/condvar.rs
index 73631053e9f..efa6f8d7765 100644
--- a/library/std/src/sys/pal/unix/sync/condvar.rs
+++ b/library/std/src/sys/pal/unix/sync/condvar.rs
@@ -64,7 +64,10 @@ impl Condvar {
         // https://gist.github.com/stepancheg/198db4623a20aad2ad7cddb8fda4a63c
         //
         // To work around this issue, the timeout is clamped to 1000 years.
-        #[cfg(target_vendor = "apple")]
+        //
+        // Cygwin implementation is based on NT API and a super large timeout
+        // makes the syscall block forever.
+        #[cfg(any(target_vendor = "apple", target_os = "cygwin"))]
         let dur = Duration::min(dur, Duration::from_secs(1000 * 365 * 86400));
 
         let timeout = Timespec::now(Self::CLOCK).checked_add_duration(&dur);