diff options
author | Roland Knall <roland.knall@br-automation.com> | 2018-01-05 15:21:17 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2018-01-05 15:14:42 +0000 |
commit | 3b64fc008f17d9a35120897f838874e821423bee (patch) | |
tree | 8a5fccca865bbb2cf6aad1622bbf0abfcf9cfc39 /ui/qt/manager | |
parent | 82b26b686e49dcb0fa15f8d585d47a569f798403 (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.cpp | 16 | ||||
-rw-r--r-- | ui/qt/manager/preference_manager.h | 2 |
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 |