uic & rcc: use the public API to set the hash seed

Instead of relying on a private symbol exported from QtCore.

Task-number: QTBUG-47566
Change-Id: I4a7dc1fe14154695b968fffd14abd2b21a18203b
Reviewed-by: David Faure <david.faure@kdab.com>
bb10
Thiago Macieira 2017-03-14 11:22:44 -07:00 committed by Liang Qi
parent 5e18f4ce0b
commit fb061e586d
2 changed files with 8 additions and 6 deletions

View File

@ -32,6 +32,7 @@
#include <qdir.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <qhashfunctions.h>
#include <qtextstream.h>
#include <qatomic.h>
#include <qglobal.h>
@ -312,16 +313,17 @@ int runRcc(int argc, char *argv[])
return 0;
}
Q_CORE_EXPORT extern QBasicAtomicInt qt_qhash_seed; // from qhash.cpp
QT_END_NAMESPACE
int main(int argc, char *argv[])
{
// rcc uses a QHash to store files in the resource system.
// we must force a certain hash order when testing or tst_rcc will fail, see QTBUG-25078
if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QT_RCC_TEST") && !qt_qhash_seed.testAndSetRelaxed(-1, 0)))
qFatal("Cannot force QHash seed for testing as requested");
if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QT_RCC_TEST"))) {
qSetGlobalQHashSeed(0);
if (qGlobalQHashSeed() != 0)
qFatal("Cannot force QHash seed for testing as requested");
}
return QT_PREPEND_NAMESPACE(runRcc)(argc, argv);
}

View File

@ -32,6 +32,7 @@
#include <qfile.h>
#include <qdir.h>
#include <qhashfunctions.h>
#include <qtextstream.h>
#include <qtextcodec.h>
#include <qcoreapplication.h>
@ -39,11 +40,10 @@
#include <qcommandlineparser.h>
QT_BEGIN_NAMESPACE
extern Q_CORE_EXPORT QBasicAtomicInt qt_qhash_seed;
int runUic(int argc, char *argv[])
{
qt_qhash_seed.testAndSetRelaxed(-1, 0); // set the hash seed to 0 if it wasn't set yet
qSetGlobalQHashSeed(0); // set the hash seed to 0
QCoreApplication app(argc, argv);
QCoreApplication::setApplicationVersion(QString::fromLatin1(QT_VERSION_STR));