diff options
author | Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> | 2016-03-17 16:01:01 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> | 2016-03-18 08:40:44 +0000 |
commit | 97194a4b7282e01cc1da3571abdbc11bb29dfe86 (patch) | |
tree | 01f112af4468ada93770703433bd6abadf448dda | |
parent | 03e694e2702d598d3cfced3a63571d9f0fd66f16 (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.cpp | 9 |
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(); |