summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qhash.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qhash.cpp')
-rw-r--r--src/corelib/tools/qhash.cpp11
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
*/