diff options
author | MÃ¥rten Nordheim <marten.nordheim@qt.io> | 2022-08-30 12:31:36 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-08-31 08:53:50 +0000 |
commit | 352cbfd3c8c6a8b4c9544293e433b1ebfce00009 (patch) | |
tree | 621eea843c4e979c22a2b666a6b58ad61bf88200 /src | |
parent | a09b9aaba95b19d1d544d38361619bbe1c601cca (diff) |
QDateTime: work around bitfield bug on msvc x86
Somehow, when mixing types in a bitfield, MSVC will use a lot
more space than expected. So ShortData ended up being 16 bytes
causing various static_asserts to trigger.
Change-Id: Ia0032e71621772db27e2917d9c71598046730107
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit a901afcd79fe0ac7cf257f2ed45c72a7cfaf028a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/time/qdatetime.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/corelib/time/qdatetime.h b/src/corelib/time/qdatetime.h index 38438ad2e6..11ece5435a 100644 --- a/src/corelib/time/qdatetime.h +++ b/src/corelib/time/qdatetime.h @@ -253,18 +253,25 @@ class QDateTimePrivate; class Q_CORE_EXPORT QDateTime { struct ShortData { -#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN - quintptr status : 8; -#endif #if QT_VERSION >= QT_VERSION_CHECK(7,0,0) || defined(QT_BOOTSTRAPPED) +# if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + qint64 status : 8; +# endif qint64 msecs : 56; + +# if Q_BYTE_ORDER == Q_BIG_ENDIAN + qint64 status : 8; +# endif #else +# if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + quintptr status : 8; +# endif // note: this is only 24 bits on 32-bit systems... qintptr msecs : sizeof(void *) * 8 - 8; -#endif -#if Q_BYTE_ORDER == Q_BIG_ENDIAN +# if Q_BYTE_ORDER == Q_BIG_ENDIAN quintptr status : 8; +# endif #endif }; |