aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/manager
diff options
context:
space:
mode:
authorRoland Knall <roland.knall@br-automation.com>2018-01-05 15:21:17 +0100
committerMichael Mann <mmann78@netscape.net>2018-01-05 15:14:42 +0000
commit3b64fc008f17d9a35120897f838874e821423bee (patch)
tree8a5fccca865bbb2cf6aad1622bbf0abfcf9cfc39 /ui/qt/manager
parent82b26b686e49dcb0fa15f8d585d47a569f798403 (diff)
Qt: Fix windows version of Preference Dialog
Initializing a static member on Windows C++ has to be done differently. This fixes the segfault introduced with Ia611ec192dcc1ad638a997182cec1ab5bdb7859c Change-Id: Ib7a9840feda74830f835345c666f57e23e9e4e0b Reviewed-on: https://code.wireshark.org/review/25163 Reviewed-by: Roland Knall <rknall@gmail.com> Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/qt/manager')
-rw-r--r--ui/qt/manager/preference_manager.cpp16
-rw-r--r--ui/qt/manager/preference_manager.h2
2 files changed, 11 insertions, 7 deletions
diff --git a/ui/qt/manager/preference_manager.cpp b/ui/qt/manager/preference_manager.cpp
index f979eb6c96..26e64e040c 100644
--- a/ui/qt/manager/preference_manager.cpp
+++ b/ui/qt/manager/preference_manager.cpp
@@ -16,7 +16,11 @@
PreferenceFactory::~PreferenceFactory() {}
-QMap<int, PreferenceFactory *> PreferenceManager::factories;
+QMap<int, PreferenceFactory *> & PreferenceManager::factories()
+{
+ static QMap<int, PreferenceFactory *> inst = QMap<int, PreferenceFactory *>();
+ return inst;
+}
PreferenceManager::PreferenceManager(QObject * parent)
: QObject(parent)
@@ -25,7 +29,7 @@ PreferenceManager::PreferenceManager(QObject * parent)
PreferenceManager::~PreferenceManager()
{
/* As this is a singleton, this is the point, where we can clear the registry */
- PreferenceManager::factories.clear();
+ PreferenceManager::factories().clear();
}
PreferenceManager * PreferenceManager::instance()
@@ -41,10 +45,10 @@ void PreferenceManager::registerType(int pref, PreferenceFactory * factory)
{
Q_ASSERT(pref >= 0);
- if ( PreferenceManager::factories.contains(pref) || ! factory )
+ if ( PreferenceManager::factories().contains(pref) || ! factory )
return;
- PreferenceManager::factories[pref] = factory;
+ PreferenceManager::factories()[pref] = factory;
}
WiresharkPreference * PreferenceManager::getPreference(PrefsItem * pref)
@@ -53,11 +57,11 @@ WiresharkPreference * PreferenceManager::getPreference(PrefsItem * pref)
return Q_NULLPTR;
int key = pref->getPrefType();
- if ( ! PreferenceManager::factories.contains(key) )
+ if ( ! PreferenceManager::factories().contains(key) )
return Q_NULLPTR;
/* All actions are parented with this manager, to clear the objects together with the manager */
- WiresharkPreference * wspref = qobject_cast<WiresharkPreference *>(PreferenceManager::factories[key]->create(this));
+ WiresharkPreference * wspref = qobject_cast<WiresharkPreference *>(PreferenceManager::factories()[key]->create(this));
if ( wspref )
wspref->setPrefsItem(pref);
diff --git a/ui/qt/manager/preference_manager.h b/ui/qt/manager/preference_manager.h
index 6ae224ee66..99dc16d0be 100644
--- a/ui/qt/manager/preference_manager.h
+++ b/ui/qt/manager/preference_manager.h
@@ -39,7 +39,7 @@ protected:
explicit PreferenceManager(QObject * parent = Q_NULLPTR);
private:
- static QMap<int, PreferenceFactory*> factories;
+ static QMap<int, PreferenceFactory*> & factories();
};
class PreferenceFactory : public QObject