From fe1d75894375c32cdaad9b9a3b98c5d1180e78af Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 5 May 2020 09:45:54 +0200 Subject: 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 --- src/plugins/cpptools/cpptoolsplugin.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/plugins/cpptools/cpptoolsplugin.cpp') 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 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("Cpp"); ExtensionSystem::PluginManager::addObject(&d->m_cppProjectUpdaterFactory); -- cgit v1.2.1