forked from qt-creator/qt-creator
ProjectExplorer: Avoid recently introduced crash when switching kits
LocalEnvironmentAspect needs to take care of being cloned. Task-number: QTCREATORBUG-15700 Change-Id: Id040a2a150dbc1cd3e407aa3d7dfc2728d7bb3db Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com> Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
@@ -73,7 +73,7 @@ Utils::Environment LocalEnvironmentAspect::baseEnvironment() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_baseEnvironmentModifier)
|
if (m_baseEnvironmentModifier)
|
||||||
m_baseEnvironmentModifier(env);
|
m_baseEnvironmentModifier(runConfiguration(), env);
|
||||||
|
|
||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class PROJECTEXPLORER_EXPORT LocalEnvironmentAspect : public EnvironmentAspect
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef std::function<void(Utils::Environment &)> BaseEnvironmentModifier;
|
typedef std::function<void(RunConfiguration *, Utils::Environment &)> BaseEnvironmentModifier;
|
||||||
LocalEnvironmentAspect(RunConfiguration *parent, const BaseEnvironmentModifier &modifier);
|
LocalEnvironmentAspect(RunConfiguration *parent, const BaseEnvironmentModifier &modifier);
|
||||||
LocalEnvironmentAspect *create(RunConfiguration *parent) const;
|
LocalEnvironmentAspect *create(RunConfiguration *parent) const;
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,9 @@ QbsRunConfiguration::QbsRunConfiguration(Target *parent, Core::Id id) :
|
|||||||
m_currentInstallStep(0),
|
m_currentInstallStep(0),
|
||||||
m_currentBuildStepList(0)
|
m_currentBuildStepList(0)
|
||||||
{
|
{
|
||||||
addExtraAspect(new LocalEnvironmentAspect(this, [this](Environment &env) { addToBaseEnvironment(env); }));
|
addExtraAspect(new LocalEnvironmentAspect(this, [](RunConfiguration *rc, Environment &env) {
|
||||||
|
static_cast<QbsRunConfiguration *>(rc)->addToBaseEnvironment(env);
|
||||||
|
}));
|
||||||
addExtraAspect(new ArgumentsAspect(this, QStringLiteral("Qbs.RunConfiguration.CommandLineArguments")));
|
addExtraAspect(new ArgumentsAspect(this, QStringLiteral("Qbs.RunConfiguration.CommandLineArguments")));
|
||||||
addExtraAspect(new WorkingDirectoryAspect(this, QStringLiteral("Qbs.RunConfiguration.WorkingDirectory")));
|
addExtraAspect(new WorkingDirectoryAspect(this, QStringLiteral("Qbs.RunConfiguration.WorkingDirectory")));
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,9 @@ DesktopQmakeRunConfiguration::DesktopQmakeRunConfiguration(Target *parent, Core:
|
|||||||
RunConfiguration(parent, id),
|
RunConfiguration(parent, id),
|
||||||
m_proFilePath(pathFromId(id))
|
m_proFilePath(pathFromId(id))
|
||||||
{
|
{
|
||||||
addExtraAspect(new LocalEnvironmentAspect(this, [this](Environment &env) { addToBaseEnvironment(env); }));
|
addExtraAspect(new LocalEnvironmentAspect(this, [](RunConfiguration *rc, Environment &env) {
|
||||||
|
static_cast<DesktopQmakeRunConfiguration *>(rc)->addToBaseEnvironment(env);
|
||||||
|
}));
|
||||||
addExtraAspect(new ArgumentsAspect(this, QStringLiteral("Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments")));
|
addExtraAspect(new ArgumentsAspect(this, QStringLiteral("Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments")));
|
||||||
addExtraAspect(new TerminalAspect(this, QStringLiteral("Qt4ProjectManager.Qt4RunConfiguration.UseTerminal")));
|
addExtraAspect(new TerminalAspect(this, QStringLiteral("Qt4ProjectManager.Qt4RunConfiguration.UseTerminal")));
|
||||||
addExtraAspect(new WorkingDirectoryAspect(this,
|
addExtraAspect(new WorkingDirectoryAspect(this,
|
||||||
|
|||||||
Reference in New Issue
Block a user