diff options
Diffstat (limited to 'src/corelib/tools/qhash.cpp')
-rw-r--r-- | src/corelib/tools/qhash.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 3172014363..cc8f5beca5 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -158,6 +158,10 @@ uint qHash(const QLatin1String &key, uint seed) */ static uint qt_create_qhash_seed() { + QByteArray envSeed = qgetenv("QT_HASH_SEED"); + if (!envSeed.isNull()) + return envSeed.toUInt(); + uint seed = 0; #ifdef Q_OS_UNIX @@ -866,6 +870,13 @@ void QHashData::checkSanity() process, and then passed by QHash as the second argument of the two-arguments overload of the qHash() function. + This randomization of QHash is enabled by default. Even though programs + should never depend on a particular QHash ordering, there may be situations + where you temporarily need deterministic behavior, e.g. for debugging or + regression testing. To disable the randomization, define the environment + variable \c QT_HASH_SEED. The contents of that variable, interpreted as a + decimal value, will be used as the seed for qHash(). + \sa QHashIterator, QMutableHashIterator, QMap, QSet */ |