summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolsplugin.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-05-05 09:45:54 +0200
committerEike Ziller <eike.ziller@qt.io>2020-05-06 12:44:10 +0000
commitfe1d75894375c32cdaad9b9a3b98c5d1180e78af (patch)
tree7e97cf65cf929a03205cd18b457414ffacb250f6 /src/plugins/cpptools/cpptoolsplugin.cpp
parentd4164da52e6ff42e19151231811fd45278889e69 (diff)
downloadqt-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.cpp8
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);