diff --git a/src/corelib/tools/qversionnumber.h b/src/corelib/tools/qversionnumber.h index 0ea73cc84287b69b74d4dccf9b5c4d1a324fcb4b..ebf1844f38937e8acf8205883a5dafea8e213d3f 100644 --- a/src/corelib/tools/qversionnumber.h +++ b/src/corelib/tools/qversionnumber.h @@ -192,9 +192,19 @@ class QVersionNumber } void setInlineData(const int *data, int len) { + dummy = 1 + len * 2; +#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + for (int i = 0; i < len; ++i) + dummy |= quintptr(data[i] & 0xFF) << (8 * (i + 1)); +#elif Q_BYTE_ORDER == Q_BIG_ENDIAN + for (int i = 0; i < len; ++i) + dummy |= quintptr(data[i] & 0xFF) << (8 * (sizeof(void *) - i - 1)); +#else + // the code above is equivalent to: setInlineSize(len); for (int i = 0; i < len; ++i) - inline_segments[InlineSegmentStartIdx + i] = qint8(data[i]); + inline_segments[InlineSegmentStartIdx + i] = data[i] & 0xFF; +#endif } Q_CORE_EXPORT void setVector(int len, int maj, int min, int mic);