diff --git a/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp b/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp index a56856852d44f0..a69ecfc1343c4f 100644 --- a/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp +++ b/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp @@ -44,9 +44,12 @@ void f() test1 = 1; cv.notify_one(); Clock::time_point t0 = Clock::now(); - while (test2 == 0 && - cv.wait_for(lk, milliseconds(250)) == std::cv_status::no_timeout) - ; + Clock::time_point wait_end = t0 + milliseconds(250); + Clock::duration d; + do { + d = wait_end - Clock::now(); + if (d <= milliseconds(0)) break; + } while (test2 == 0 && cv.wait_for(lk, d) == std::cv_status::no_timeout); Clock::time_point t1 = Clock::now(); if (runs == 0) { diff --git a/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp b/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp index 98da35f53b8059..0b5ef2cf10d7e6 100644 --- a/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp +++ b/libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp @@ -47,9 +47,12 @@ void f() test1 = 1; cv.notify_one(); Clock::time_point t0 = Clock::now(); - while (test2 == 0 && - cv.wait_for(lk, milliseconds(250)) == std::cv_status::no_timeout) - ; + Clock::time_point wait_end = t0 + milliseconds(250); + Clock::duration d; + do { + d = wait_end - Clock::now(); + if (d <= milliseconds(0)) break; + } while (test2 == 0 && cv.wait_for(lk, d) == std::cv_status::no_timeout); Clock::time_point t1 = Clock::now(); if (runs == 0) {