Whitespace cleanup in corelib/global

Change-Id: I087d7d949cfd43e48e8a008621a4eeaa9d104ceb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Allan Sandfeld Jensen 2020-10-20 11:42:50 +02:00
parent 33617c03a4
commit ff776a3059
16 changed files with 142 additions and 106 deletions

View File

@ -45,8 +45,7 @@
QT_BEGIN_NAMESPACE
namespace QContainerTraits
{
namespace QContainerTraits {
template<typename C>
using value_type = typename C::value_type;

View File

@ -815,7 +815,7 @@ size_t simdSwapLoop(const uchar *src, size_t bytes, uchar *dst) noexcept
size_t i = sseSwapLoop(src, bytes, dst, shuffleMaskPtr);
// epilogue
for (size_t _i = 0 ; i < bytes && _i < sizeof(__m128i); i += sizeof(T), _i += sizeof(T))
for (size_t _i = 0; i < bytes && _i < sizeof(__m128i); i += sizeof(T), _i += sizeof(T))
qbswap(qFromUnaligned<T>(src + i), dst + i);
// return the total, so the bswapLoop below does nothing
@ -886,12 +886,13 @@ void *bswapLoop(const uchar *src, size_t n, uchar *dst) noexcept
size_t i = simdSwapLoop<T>(src, n, dst);
for ( ; i < n; i += sizeof(T))
for (; i < n; i += sizeof(T))
qbswap(qFromUnaligned<T>(src + i), dst + i);
return dst + i;
}
template <> void *qbswap<2>(const void *source, qsizetype n, void *dest) noexcept
template<>
void *qbswap<2>(const void *source, qsizetype n, void *dest) noexcept
{
const uchar *src = reinterpret_cast<const uchar *>(source);
uchar *dst = reinterpret_cast<uchar *>(dest);
@ -899,7 +900,8 @@ template <> void *qbswap<2>(const void *source, qsizetype n, void *dest) noexcep
return bswapLoop<quint16>(src, n << 1, dst);
}
template <> void *qbswap<4>(const void *source, qsizetype n, void *dest) noexcept
template<>
void *qbswap<4>(const void *source, qsizetype n, void *dest) noexcept
{
const uchar *src = reinterpret_cast<const uchar *>(source);
uchar *dst = reinterpret_cast<uchar *>(dest);
@ -907,7 +909,8 @@ template <> void *qbswap<4>(const void *source, qsizetype n, void *dest) noexcep
return bswapLoop<quint32>(src, n << 2, dst);
}
template <> void *qbswap<8>(const void *source, qsizetype n, void *dest) noexcept
template<>
void *qbswap<8>(const void *source, qsizetype n, void *dest) noexcept
{
const uchar *src = reinterpret_cast<const uchar *>(source);
uchar *dst = reinterpret_cast<uchar *>(dest);

View File

@ -73,12 +73,12 @@ public:
// FIXME: val is public until qtdeclarative is fixed to not access it directly.
UT val;
QSpecialIntegerBitfield &operator =(T t)
QSpecialIntegerBitfield &operator=(T t)
{
UT i = S::fromSpecial(val);
i &= ~mask();
i |= (UT(t) << pos) & mask();
val = S::toSpecial(i);
val = S::toSpecial(i);
return *this;
}
operator T() const
@ -93,32 +93,26 @@ public:
return (S::fromSpecial(val) & mask()) >> pos;
}
bool operator !() const { return !(val & S::toSpecial(mask())); }
bool operator ==(QSpecialIntegerBitfield<S, pos, width> i) const
{ return ((val ^ i.val) & S::toSpecial(mask())) == 0; }
bool operator !=(QSpecialIntegerBitfield<S, pos, width> i) const
{ return ((val ^ i.val) & S::toSpecial(mask())) != 0; }
bool operator!() const { return !(val & S::toSpecial(mask())); }
bool operator==(QSpecialIntegerBitfield<S, pos, width> i) const
{
return ((val ^ i.val) & S::toSpecial(mask())) == 0;
}
bool operator!=(QSpecialIntegerBitfield<S, pos, width> i) const
{
return ((val ^ i.val) & S::toSpecial(mask())) != 0;
}
QSpecialIntegerBitfield &operator +=(T i)
{ return (*this = (T(*this) + i)); }
QSpecialIntegerBitfield &operator -=(T i)
{ return (*this = (T(*this) - i)); }
QSpecialIntegerBitfield &operator *=(T i)
{ return (*this = (T(*this) * i)); }
QSpecialIntegerBitfield &operator /=(T i)
{ return (*this = (T(*this) / i)); }
QSpecialIntegerBitfield &operator %=(T i)
{ return (*this = (T(*this) % i)); }
QSpecialIntegerBitfield &operator |=(T i)
{ return (*this = (T(*this) | i)); }
QSpecialIntegerBitfield &operator &=(T i)
{ return (*this = (T(*this) & i)); }
QSpecialIntegerBitfield &operator ^=(T i)
{ return (*this = (T(*this) ^ i)); }
QSpecialIntegerBitfield &operator >>=(T i)
{ return (*this = (T(*this) >> i)); }
QSpecialIntegerBitfield &operator <<=(T i)
{ return (*this = (T(*this) << i)); }
QSpecialIntegerBitfield &operator+=(T i) { return (*this = (T(*this) + i)); }
QSpecialIntegerBitfield &operator-=(T i) { return (*this = (T(*this) - i)); }
QSpecialIntegerBitfield &operator*=(T i) { return (*this = (T(*this) * i)); }
QSpecialIntegerBitfield &operator/=(T i) { return (*this = (T(*this) / i)); }
QSpecialIntegerBitfield &operator%=(T i) { return (*this = (T(*this) % i)); }
QSpecialIntegerBitfield &operator|=(T i) { return (*this = (T(*this) | i)); }
QSpecialIntegerBitfield &operator&=(T i) { return (*this = (T(*this) & i)); }
QSpecialIntegerBitfield &operator^=(T i) { return (*this = (T(*this) ^ i)); }
QSpecialIntegerBitfield &operator>>=(T i) { return (*this = (T(*this) >> i)); }
QSpecialIntegerBitfield &operator<<=(T i) { return (*this = (T(*this) << i)); }
};
template<typename T, int pos, int width>
@ -136,7 +130,6 @@ using qint32_be_bitfield = QBEIntegerBitfield<int, pos, width>;
template<int pos, int width>
using quint32_be_bitfield = QBEIntegerBitfield<uint, pos, width>;
QT_END_NAMESPACE
#endif // QENDIAN_P_H

View File

@ -89,8 +89,8 @@ template<typename Enum>
class QFlags
{
static_assert((sizeof(Enum) <= sizeof(int)),
"QFlags uses an int as storage, so an enum with underlying "
"long long will overflow.");
"QFlags uses an int as storage, so an enum with underlying "
"long long will overflow.");
static_assert((std::is_enum<Enum>::value), "QFlags is only usable on enumeration types.");
public:

View File

@ -1963,7 +1963,7 @@ QWindowsSockInit::QWindowsSockInit()
WSAData wsadata;
// IPv6 requires Winsock v2.0 or better.
if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0) {
if (WSAStartup(MAKEWORD(2, 0), &wsadata) != 0) {
qWarning("QTcpSocketAPI: WinSock v2.0 initialization failed.");
} else {
version = 0x20;
@ -2095,7 +2095,7 @@ static bool readEtcFile(QUnixOSVersion &v, const char *filename,
const char *end = buffer.constEnd();
const char *eol;
QByteArray line;
for ( ; ptr != end; ptr = eol + 1) {
for (; ptr != end; ptr = eol + 1) {
// find the end of the line after ptr
eol = static_cast<const char *>(memchr(ptr, '\n', end - ptr));
if (!eol)
@ -3135,17 +3135,17 @@ void qt_assert_x(const char *where, const char *what, const char *file, int line
Q_CORE_EXPORT Q_DECL_CONST_FUNCTION unsigned int qt_int_sqrt(unsigned int n)
{
// n must be in the range 0...UINT_MAX/2-1
if (n >= (UINT_MAX>>2)) {
if (n >= (UINT_MAX >> 2)) {
unsigned int r = 2 * qt_int_sqrt(n / 4);
unsigned int r2 = r + 1;
return (n >= r2 * r2) ? r2 : r;
}
uint h, p= 0, q= 1, r= n;
uint h, p = 0, q = 1, r = n;
while (q <= n)
q <<= 2;
while (q != 1) {
q >>= 2;
h= p + q;
h = p + q;
p >>= 1;
if (r >= h) {
p += q;
@ -3229,7 +3229,6 @@ QByteArray qgetenv(const char *varName)
#endif
}
/*!
\fn QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
\fn QString qEnvironmentVariable(const char *varName)
@ -3459,7 +3458,7 @@ bool qEnvironmentVariableIsSet(const char *varName) noexcept
\sa qgetenv(), qEnvironmentVariable()
*/
bool qputenv(const char *varName, const QByteArray& value)
bool qputenv(const char *varName, const QByteArray &value)
{
const auto locker = qt_scoped_lock(environmentMutex);
#if defined(Q_CC_MSVC)
@ -3471,7 +3470,7 @@ bool qputenv(const char *varName, const QByteArray& value)
QByteArray buffer(varName);
buffer += '=';
buffer += value;
char* envVar = qstrdup(buffer.constData());
char *envVar = qstrdup(buffer.constData());
int result = putenv(envVar);
if (result != 0) // error. we have to delete the string.
delete[] envVar;
@ -4024,7 +4023,8 @@ bool qunsetenv(const char *varName)
with meaningful parameter names in their signatures.
*/
struct QInternal_CallBackTable {
struct QInternal_CallBackTable
{
QList<QList<qInternalCallback>> callbacks;
};
@ -4046,7 +4046,7 @@ bool QInternal::unregisterCallback(Callback cb, qInternalCallback callback)
if (unsigned(cb) < unsigned(QInternal::LastCallback)) {
if (global_callback_table.exists()) {
QInternal_CallBackTable *cbt = global_callback_table();
return (bool) cbt->callbacks[cb].removeAll(callback);
return cbt->callbacks[cb].removeAll(callback) > 0;
}
}
return false;
@ -4063,7 +4063,7 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
if (cbt && cb < cbt->callbacks.size()) {
QList<qInternalCallback> callbacks = cbt->callbacks[cb];
bool ret = false;
for (int i=0; i<callbacks.size(); ++i)
for (int i = 0; i < callbacks.size(); ++i)
ret |= (callbacks.at(i))(parameters);
return ret;
}

View File

@ -553,8 +553,8 @@ template <> struct QIntegerForSize<16> { __extension__ typedef unsigned __int
template <class T> struct QIntegerForSizeof: QIntegerForSize<sizeof(T)> { };
typedef QIntegerForSize<Q_PROCESSOR_WORDSIZE>::Signed qregisterint;
typedef QIntegerForSize<Q_PROCESSOR_WORDSIZE>::Unsigned qregisteruint;
typedef QIntegerForSizeof<void*>::Unsigned quintptr;
typedef QIntegerForSizeof<void*>::Signed qptrdiff;
typedef QIntegerForSizeof<void *>::Unsigned quintptr;
typedef QIntegerForSizeof<void *>::Signed qptrdiff;
typedef qptrdiff qintptr;
using qsizetype = QIntegerForSizeof<std::size_t>::Signed;

View File

@ -132,17 +132,29 @@ struct QGlobalStatic
bool isDestroyed() const { return guard.loadRelaxed() <= QtGlobalStatic::Destroyed; }
bool exists() const { return guard.loadRelaxed() == QtGlobalStatic::Initialized; }
operator Type *() { if (isDestroyed()) return nullptr; return innerFunction(); }
Type *operator()() { if (isDestroyed()) return nullptr; return innerFunction(); }
operator Type *()
{
if (isDestroyed())
return nullptr;
return innerFunction();
}
Type *operator()()
{
if (isDestroyed())
return nullptr;
return innerFunction();
}
Type *operator->()
{
Q_ASSERT_X(!isDestroyed(), "Q_GLOBAL_STATIC", "The global static was used after being destroyed");
return innerFunction();
Q_ASSERT_X(!isDestroyed(), "Q_GLOBAL_STATIC",
"The global static was used after being destroyed");
return innerFunction();
}
Type &operator*()
{
Q_ASSERT_X(!isDestroyed(), "Q_GLOBAL_STATIC", "The global static was used after being destroyed");
return *innerFunction();
Q_ASSERT_X(!isDestroyed(), "Q_GLOBAL_STATIC",
"The global static was used after being destroyed");
return *innerFunction();
}
};

View File

@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
class Q_CORE_EXPORT QLibraryInfo
{
public:
static const char * build() noexcept;
static const char *build() noexcept;
static bool isDebugBuild();
@ -57,8 +57,7 @@ public:
static QVersionNumber version() noexcept Q_DECL_CONST_FUNCTION;
#endif
enum LibraryPath
{
enum LibraryPath {
PrefixPath = 0,
DocumentationPath,
HeadersPath,

View File

@ -1069,8 +1069,8 @@ static const char emptyTokenC[] = "";
static const char defaultPattern[] = "%{if-category}%{category}: %{endif}%{message}";
struct QMessagePattern {
struct QMessagePattern
{
QMessagePattern();
~QMessagePattern();
@ -1078,13 +1078,14 @@ struct QMessagePattern {
// 0 terminated arrays of literal tokens / literal or placeholder tokens
std::unique_ptr<std::unique_ptr<const char[]>[]> literals;
std::unique_ptr<const char*[]> tokens;
QList<QString> timeArgs; // timeFormats in sequence of %{time
std::unique_ptr<const char *[]> tokens;
QList<QString> timeArgs; // timeFormats in sequence of %{time
#ifndef QT_BOOTSTRAPPED
QElapsedTimer timer;
#endif
#ifdef QLOGGING_HAVE_BACKTRACE
struct BacktraceParams {
struct BacktraceParams
{
QString backtraceSeparator;
int backtraceDepth;
};
@ -1115,8 +1116,7 @@ QMessagePattern::QMessagePattern()
}
}
QMessagePattern::~QMessagePattern()
= default;
QMessagePattern::~QMessagePattern() = default;
void QMessagePattern::setPattern(const QString &pattern)
{
@ -1158,7 +1158,7 @@ void QMessagePattern::setPattern(const QString &pattern)
// tokenizer
std::vector<std::unique_ptr<const char[]>> literalsVar;
tokens.reset(new const char*[lexemes.size() + 1]);
tokens.reset(new const char *[lexemes.size() + 1]);
tokens[lexemes.size()] = nullptr;
bool nestedIfError = false;
@ -1290,7 +1290,7 @@ static QStringList backtraceFramesForLogMessage(int frameCount)
// This code is protected by QMessagePattern::mutex so it is thread safe on all compilers
static const QRegularExpression rx(QStringLiteral("^(?:[^(]*/)?([^(/]+)\\(([^+]*)(?:[\\+[a-f0-9x]*)?\\) \\[[a-f0-9x]*\\]$"));
QVarLengthArray<void*, 32> buffer(8 + frameCount);
QVarLengthArray<void *, 32> buffer(8 + frameCount);
int n = backtrace(buffer.data(), buffer.size());
if (n > 0) {
int numberPrinted = 0;
@ -1642,11 +1642,21 @@ static bool android_default_message_handler(QtMsgType type,
android_LogPriority priority = ANDROID_LOG_DEBUG;
switch (type) {
case QtDebugMsg: priority = ANDROID_LOG_DEBUG; break;
case QtInfoMsg: priority = ANDROID_LOG_INFO; break;
case QtWarningMsg: priority = ANDROID_LOG_WARN; break;
case QtCriticalMsg: priority = ANDROID_LOG_ERROR; break;
case QtFatalMsg: priority = ANDROID_LOG_FATAL; break;
case QtDebugMsg:
priority = ANDROID_LOG_DEBUG;
break;
case QtInfoMsg:
priority = ANDROID_LOG_INFO;
break;
case QtWarningMsg:
priority = ANDROID_LOG_WARN;
break;
case QtCriticalMsg:
priority = ANDROID_LOG_ERROR;
break;
case QtFatalMsg:
priority = ANDROID_LOG_FATAL;
break;
};
__android_log_print(priority, qPrintable(QCoreApplication::applicationName()), "%s\n", qPrintable(formattedMessage));
@ -1666,8 +1676,8 @@ static void win_outputDebugString_helper(QStringView message)
OutputDebugString(reinterpret_cast<const wchar_t *>(message.utf16()));
} else {
wchar_t *messagePart = new wchar_t[maxOutputStringLength + 1];
for (int i = 0; i < message.length(); i += maxOutputStringLength ) {
const int length = std::min(message.length() - i, maxOutputStringLength );
for (int i = 0; i < message.length(); i += maxOutputStringLength) {
const int length = std::min(message.length() - i, maxOutputStringLength);
const int len = message.mid(i, length).toWCharArray(messagePart);
Q_ASSERT(len == length);
messagePart[len] = 0;

View File

@ -57,7 +57,14 @@ QT_BEGIN_NAMESPACE
class QDebug;
class QNoDebug;
enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg = QtCriticalMsg };
enum QtMsgType {
QtDebugMsg,
QtWarningMsg,
QtCriticalMsg,
QtFatalMsg,
QtInfoMsg,
QtSystemMsg = QtCriticalMsg
};
class QMessageLogContext
{

View File

@ -58,9 +58,9 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
{
// fake an aligned allocation
void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : nullptr;
if (alignment <= sizeof(void*)) {
if (alignment <= sizeof(void *)) {
// special, fast case
void **newptr = static_cast<void **>(realloc(actualptr, newsize + sizeof(void*)));
void **newptr = static_cast<void **>(realloc(actualptr, newsize + sizeof(void *)));
if (!newptr)
return nullptr;
if (newptr == actualptr) {
@ -112,4 +112,3 @@ void qFreeAligned(void *ptr)
}
QT_END_NAMESPACE

View File

@ -130,7 +130,7 @@ Q_DECL_CONST_FUNCTION static inline int fpclassify(float f) { return std::fpclas
constexpr Q_DECL_CONST_FUNCTION static inline double qt_inf() noexcept
{
static_assert(std::numeric_limits<double>::has_infinity,
"platform has no definition for infinity for type double");
"platform has no definition for infinity for type double");
return std::numeric_limits<double>::infinity();
}
@ -138,7 +138,7 @@ constexpr Q_DECL_CONST_FUNCTION static inline double qt_inf() noexcept
constexpr Q_DECL_CONST_FUNCTION static inline double qt_snan() noexcept
{
static_assert(std::numeric_limits<double>::has_signaling_NaN,
"platform has no definition for signaling NaN for type double");
"platform has no definition for signaling NaN for type double");
return std::numeric_limits<double>::signaling_NaN();
}
#endif
@ -147,7 +147,7 @@ constexpr Q_DECL_CONST_FUNCTION static inline double qt_snan() noexcept
constexpr Q_DECL_CONST_FUNCTION static inline double qt_qnan() noexcept
{
static_assert(std::numeric_limits<double>::has_quiet_NaN,
"platform has no definition for quiet NaN for type double");
"platform has no definition for quiet NaN for type double");
return std::numeric_limits<double>::quiet_NaN();
}
@ -203,7 +203,8 @@ namespace {
This function works for v containing infinities, but not NaN. It's the
caller's responsibility to exclude that possibility before calling it.
*/
template <typename T> static inline bool convertDoubleTo(double v, T *value, bool allow_precision_upgrade = true)
template<typename T>
static inline bool convertDoubleTo(double v, T *value, bool allow_precision_upgrade = true)
{
static_assert(std::numeric_limits<T>::is_integer);

View File

@ -181,7 +181,8 @@ struct QRandomGenerator::SystemGenerator
// For std::mersenne_twister_engine implementations that use something
// other than quint32 (unsigned int) to fill their buffers.
template <typename T> void generate(T *begin, T *end)
template<typename T>
void generate(T *begin, T *end)
{
static_assert(sizeof(T) >= sizeof(quint32));
if (sizeof(T) == sizeof(quint32)) {
@ -414,7 +415,8 @@ struct QRandomGenerator::SystemAndGlobalGenerators
new (&rng->storage.engine()) RandomEngine(self()->sys);
}
struct PRNGLocker {
struct PRNGLocker
{
const bool locked;
PRNGLocker(const QRandomGenerator *that)
: locked(that == globalNoInit())

View File

@ -76,13 +76,12 @@ Q_CORE_EXPORT QBasicAtomicInteger<uint> qt_randomdevice_control = Q_BASIC_ATOMIC
#elif defined(QT_BUILD_INTERNAL)
extern Q_CORE_EXPORT QBasicAtomicInteger<uint> qt_randomdevice_control;
#else
static const struct {
static const struct
{
uint loadAcquire() const { return 0; }
} qt_randomdevice_control;
#endif
QT_END_NAMESPACE
#endif // QRANDOM_P_H

View File

@ -428,38 +428,46 @@ static quint64 detectProcessorFeatures()
// QSimpleBuffer, which has the bare minimum needed to use memory
// dynamically and read lines from /proc/cpuinfo of arbitrary sizes.
//
struct QSimpleBuffer {
struct QSimpleBuffer
{
static const int chunk_size = 256;
char *data;
unsigned alloc;
unsigned size;
QSimpleBuffer(): data(0), alloc(0), size(0) {}
QSimpleBuffer() : data(nullptr), alloc(0), size(0) { }
~QSimpleBuffer() { ::free(data); }
void resize(unsigned newsize) {
void resize(unsigned newsize)
{
if (newsize > alloc) {
unsigned newalloc = chunk_size * ((newsize / chunk_size) + 1);
if (newalloc < newsize) newalloc = newsize;
if (newalloc < newsize)
newalloc = newsize;
if (newalloc != alloc) {
data = static_cast<char*>(::realloc(data, newalloc));
data = static_cast<char *>(::realloc(data, newalloc));
alloc = newalloc;
}
}
size = newsize;
}
void append(const QSimpleBuffer &other, unsigned appendsize) {
void append(const QSimpleBuffer &other, unsigned appendsize)
{
unsigned oldsize = size;
resize(oldsize + appendsize);
::memcpy(data + oldsize, other.data, appendsize);
}
void popleft(unsigned amount) {
if (amount >= size) return resize(0);
void popleft(unsigned amount)
{
if (amount >= size)
return resize(0);
size -= amount;
::memmove(data, data + amount, size);
}
char* cString() {
if (!alloc) resize(1);
char *cString()
{
if (!alloc)
resize(1);
return (data[size] = '\0', data);
}
};
@ -473,7 +481,7 @@ struct QSimpleBuffer {
static void bufReadLine(int fd, QSimpleBuffer &line, QSimpleBuffer &buffer)
{
for (;;) {
char *newline = static_cast<char*>(::memchr(buffer.data, '\n', buffer.size));
char *newline = static_cast<char *>(::memchr(buffer.data, '\n', buffer.size));
if (newline) {
unsigned piece_size = newline - buffer.data + 1;
line.append(buffer, piece_size);
@ -486,9 +494,12 @@ static void bufReadLine(int fd, QSimpleBuffer &line, QSimpleBuffer &buffer)
buffer.resize(buffer.size + QSimpleBuffer::chunk_size);
buffer.size = oldsize;
}
ssize_t read_bytes = ::qt_safe_read(fd, buffer.data + buffer.size, QSimpleBuffer::chunk_size);
if (read_bytes > 0) buffer.size += read_bytes;
else return;
ssize_t read_bytes =
::qt_safe_read(fd, buffer.data + buffer.size, QSimpleBuffer::chunk_size);
if (read_bytes > 0)
buffer.size += read_bytes;
else
return;
}
}
@ -509,7 +520,7 @@ static bool procCpuinfoContains(const char *prefix, const char *string)
do {
line.resize(0);
bufReadLine(cpuinfo_fd, line, buffer);
char *colon = static_cast<char*>(::memchr(line.data, ':', line.size));
char *colon = static_cast<char *>(::memchr(line.data, ':', line.size));
if (colon && line.size > prefix_len + string_len) {
if (!::strncmp(prefix, line.data, prefix_len)) {
// prefix matches, next character must be ':' or space
@ -657,10 +668,10 @@ static QT_FUNCTION_TARGET(RDSEED) unsigned *qt_random_rdseed(unsigned *ptr, unsi
// If the independent bit generator used by RDSEED is out of entropy, it
// may take time to replenish.
// https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide
while (ptr + sizeof(randuint)/sizeof(*ptr) <= end) {
while (ptr + sizeof(randuint) / sizeof(*ptr) <= end) {
if (_rdseedXX_step(reinterpret_cast<randuint *>(ptr)) == 0)
goto out;
ptr += sizeof(randuint)/sizeof(*ptr);
ptr += sizeof(randuint) / sizeof(*ptr);
}
if (sizeof(*ptr) != sizeof(randuint) && ptr != end) {

View File

@ -50,7 +50,8 @@ QT_BEGIN_NAMESPACE
*/
class QString;
class Q_CORE_EXPORT QSysInfo {
class Q_CORE_EXPORT QSysInfo
{
public:
enum Sizes {
WordSize = (sizeof(void *)<<3)