summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@theqtcompany.com>2016-03-17 16:01:01 +0100
committerTimur Pocheptsov <timur.pocheptsov@theqtcompany.com>2016-03-18 08:40:44 +0000
commit97194a4b7282e01cc1da3571abdbc11bb29dfe86 (patch)
tree01f112af4468ada93770703433bd6abadf448dda
parent03e694e2702d598d3cfced3a63571d9f0fd66f16 (diff)
Nfc - guarantee statics initialization order
Use Q_GLOBAL_STATIC instead of simple static QMap object to avoid problems with undefined initialization order for 'statics' from different translation units. Task-number: QTBUG-51860 Change-Id: I6ce48f3c0770dc0ff125b443816f6b3b23ae809e Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r--src/nfc/qqmlndefrecord.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/nfc/qqmlndefrecord.cpp b/src/nfc/qqmlndefrecord.cpp
index ddf2a0bb..5c190f5a 100644
--- a/src/nfc/qqmlndefrecord.cpp
+++ b/src/nfc/qqmlndefrecord.cpp
@@ -36,6 +36,8 @@
#include <QtCore/QMap>
#include <QtCore/QRegExp>
+#include <QtCore/qglobalstatic.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -167,7 +169,8 @@ QT_BEGIN_NAMESPACE
This macro should be expanded in the implementation file for \a className.
*/
-static QMap<QString, const QMetaObject *> registeredNdefRecordTypes;
+typedef QMap<QString, const QMetaObject *> NDefRecordTypesMap;
+Q_GLOBAL_STATIC(NDefRecordTypesMap, registeredNdefRecordTypes)
class QQmlNdefRecordPrivate
{
@@ -196,7 +199,7 @@ void qRegisterNdefRecordTypeHelper(const QMetaObject *metaObject,
QNdefRecord::TypeNameFormat typeNameFormat,
const QByteArray &type)
{
- registeredNdefRecordTypes.insert(urnForRecordType(typeNameFormat, type), metaObject);
+ registeredNdefRecordTypes()->insert(urnForRecordType(typeNameFormat, type), metaObject);
}
/*!
@@ -206,7 +209,7 @@ QQmlNdefRecord *qNewDeclarativeNdefRecordForNdefRecord(const QNdefRecord &record
{
const QString urn = urnForRecordType(record.typeNameFormat(), record.type());
- QMapIterator<QString, const QMetaObject *> i(registeredNdefRecordTypes);
+ QMapIterator<QString, const QMetaObject *> i(*registeredNdefRecordTypes());
while (i.hasNext()) {
i.next();