diff --git a/src/corelib/plugin/quuid.h b/src/corelib/plugin/quuid.h index 74c591cd993..49f2b6749cd 100644 --- a/src/corelib/plugin/quuid.h +++ b/src/corelib/plugin/quuid.h @@ -283,12 +283,15 @@ Q_CORE_EXPORT size_t qHash(const QUuid &uuid, size_t seed = 0) noexcept; QUuid::QUuid(Id128Bytes uuid, QSysInfo::Endian order) noexcept { + char bytes[sizeof uuid]; if (order == QSysInfo::LittleEndian) - uuid = qbswap(uuid); - data1 = qFromBigEndian(&uuid.data[0]); - data2 = qFromBigEndian(&uuid.data[4]); - data3 = qFromBigEndian(&uuid.data[6]); - memcpy(data4, &uuid.data[8], sizeof(data4)); + qbswap(uuid, bytes); + else + memcpy(bytes, &uuid, sizeof bytes); + data1 = qFromBigEndian(&bytes[0]); + data2 = qFromBigEndian(&bytes[4]); + data3 = qFromBigEndian(&bytes[6]); + memcpy(data4, &bytes[8], sizeof(data4)); } QUuid::Id128Bytes QUuid::toBytes(QSysInfo::Endian order) const noexcept