diff options
author | Eike Ziller <eike.ziller@qt.io> | 2020-05-05 09:45:54 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2020-05-06 12:44:10 +0000 |
commit | fe1d75894375c32cdaad9b9a3b98c5d1180e78af (patch) | |
tree | 7e97cf65cf929a03205cd18b457414ffacb250f6 /src/plugins/cpptools/cpptoolsplugin.cpp | |
parent | d4164da52e6ff42e19151231811fd45278889e69 (diff) | |
download | qt-creator-fe1d75894375c32cdaad9b9a3b98c5d1180e78af.tar.gz |
CppTools: Fix crash when loading pre 4.11 settings
If pre 4.11 settings are present, this might lead to updated settings
being written at startup.
The code that writes settings indirectly uses the CppToolsPluginPrivate
instance via the "d" member of CppToolsPlugin. So this code path crashes
if triggered in the constructor of CppToolsPluginPrivate, since at that
point "d" cannot be assigned yet. Separate construction and
initialization to avoid this.
Fixes: QTCREATORBUG-23916
Change-Id: I0cb8a08bd9aa051679b71b06f569c44d2faab5a8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cpptoolsplugin.cpp')
-rw-r--r-- | src/plugins/cpptools/cpptoolsplugin.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index 406f9048f8..b94406b185 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -80,10 +80,9 @@ static QHash<QString, QString> m_headerSourceMapping; class CppToolsPluginPrivate { public: - CppToolsPluginPrivate() - { - m_codeModelSettings.fromSettings(ICore::settings()); - } + CppToolsPluginPrivate() {} + + void initialize() { m_codeModelSettings.fromSettings(ICore::settings()); } ~CppToolsPluginPrivate() { @@ -165,6 +164,7 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) Q_UNUSED(error) d = new CppToolsPluginPrivate; + d->initialize(); JsExpander::registerGlobalObject<CppToolsJsExtension>("Cpp"); ExtensionSystem::PluginManager::addObject(&d->m_cppProjectUpdaterFactory); |