summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-08-16 07:32:42 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-08-16 16:05:25 -0700
commit1022922037e794f3687d7c58f8b2caa44343a43b (patch)
tree0bcf73a2b48ebb088cbfde38e393e431d781e1e0 /src/corelib/thread
parente163c4943593aec7f69c2bbaf49a0020d806d23d (diff)
QSemaphore: Fix warnings about shift exceeding size on 32-bit
error: right shift count >= width of type [-Werror=shift-count-overflow] Pick-to: 6.4 Fixes: QTBUG-105687 Change-Id: Ic6547f8247454b47baa8fffd170bd9cd0e2a8ca3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/corelib/thread')
-rw-r--r--src/corelib/thread/qsemaphore.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp
index 664085eb2b..803aa30bef 100644
--- a/src/corelib/thread/qsemaphore.cpp
+++ b/src/corelib/thread/qsemaphore.cpp
@@ -161,7 +161,7 @@ futexSemaphoreTryAcquire_loop(QBasicAtomicInteger<quintptr> &u, quintptr curValu
if constexpr (futexHasWaiterCount) {
Q_ASSERT(n > 1);
ptr = futexHigh32(&u);
- curValue >>= 32;
+ curValue = quint64(curValue) >> 32;
}
}
@@ -213,7 +213,8 @@ template <bool IsTimed> bool futexSemaphoreTryAcquire(QBasicAtomicInteger<quintp
if constexpr (futexHasWaiterCount) {
// We don't use the fetched value from above so futexWait() fails if
// it changed after the testAndSetOrdered above.
- if (((curValue >> 32) & 0x7fffffffU) == 0x7fffffffU) {
+ quint32 waiterCount = (quint64(curValue) >> 32) & 0x7fffffffU;
+ if (waiterCount == 0x7fffffffU) {
qCritical() << "Waiter count overflow in QSemaphore";
return false;
}