Allow QHash randomization to be disabled by environment variable
The new randomization of QHash is enabled by default. There may be cases where you need deterministic behavior, e.g. for debugging or regression testing. This patch disables randomization if QT_HASH_SEED is defined. Change-Id: Idfad55ea7aba830add0a36334f0f763c62fdce13 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
parent
f604fd8ff4
commit
b5a11a7be5
@ -158,6 +158,10 @@ uint qHash(const QLatin1String &key, uint seed)
|
|||||||
*/
|
*/
|
||||||
static uint qt_create_qhash_seed()
|
static uint qt_create_qhash_seed()
|
||||||
{
|
{
|
||||||
|
QByteArray envSeed = qgetenv("QT_HASH_SEED");
|
||||||
|
if (!envSeed.isNull())
|
||||||
|
return envSeed.toUInt();
|
||||||
|
|
||||||
uint seed = 0;
|
uint seed = 0;
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
@ -866,6 +870,13 @@ void QHashData::checkSanity()
|
|||||||
process, and then passed by QHash as the second argument of the
|
process, and then passed by QHash as the second argument of the
|
||||||
two-arguments overload of the qHash() function.
|
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
|
\sa QHashIterator, QMutableHashIterator, QMap, QSet
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user