From c68c0fb64cd7309896d11f2b0806cddd56512e5c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 23 Oct 2024 07:55:39 -0700 Subject: [PATCH] QWaitCondition/Unix: fix execution with negative deadlines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pthread_cond_timedwait() doesn't like it. Change-Id: I37ae26948fbc72fd1028fffd107e561cc54c4553 Reviewed-by: Ahmad Samir Reviewed-by: Ivan Solovev Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Edward Welbourne (cherry picked from commit d60472c2c436fc464d5a1b81538967676f71b6a0) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/thread/qwaitcondition_unix.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp index d841183f09e..123c9ad6389 100644 --- a/src/corelib/thread/qwaitcondition_unix.cpp +++ b/src/corelib/thread/qwaitcondition_unix.cpp @@ -74,7 +74,10 @@ static void qt_abstime_for_timeout(timespec *ts, QDeadlineTimer deadline) using Clock = std::conditional_t; auto timePoint = deadline.deadline(); - *ts = durationToTimespec(timePoint.time_since_epoch()); + if (timePoint < Clock::time_point{}) + *ts = {}; + else + *ts = durationToTimespec(timePoint.time_since_epoch()); } class QWaitConditionPrivate