Commit 064dadb8a1ce1715f974694bb5c545f6eee5d3eb

  • avatar
  • con <qtc-committer @no…a.com> (Committer)
  • Fri Oct 09 10:42:24 CEST 2009
  • avatar
  • dt <qtc-committer @no…a.com> (Author)
  • Thu Oct 08 20:01:07 CEST 2009
Fix crash on cloning and removing buildconfigurations
(cherry picked from commit a3141e9d744aa1d4a232de35722cb8bf2cf40c7f)
  
306306 return;
307307
308308 QString newDisplayName = newBuildConfiguration;
309 // Check that the internal name is not taken and use a different one otherwise
310 if (m_project->buildConfiguration(newBuildConfiguration)) {
311 int i = 2;
312 while (m_project->buildConfiguration(newBuildConfiguration + QString::number(i)))
313 ++i;
314 newBuildConfiguration += QString::number(i);
315 }
309 QStringList buildConfigurationDisplayNames;
310 foreach(BuildConfiguration *bc, m_project->buildConfigurations())
311 buildConfigurationDisplayNames << bc->displayName();
312 newDisplayName = Project::makeUnique(newDisplayName, buildConfigurationDisplayNames);
313
314 QStringList buildConfigurationNames;
315 foreach(BuildConfiguration *bc, m_project->buildConfigurations())
316 buildConfigurationNames << bc->name();
317
318 newBuildConfiguration = Project::makeUnique(newBuildConfiguration, buildConfigurationNames);
319
320 qDebug()<<"BuildSettingsWidget::cloneConfiguration source:"<<sourceConfiguration<<"to: "<<newBuildConfiguration;
316321
317322 m_project->copyBuildConfiguration(sourceConfiguration, newBuildConfiguration);
318323 m_project->setDisplayNameFor(m_project->buildConfiguration(newBuildConfiguration), newDisplayName);
  
150150void Project::removeBuildConfiguration(BuildConfiguration *configuration)
151151{
152152 //todo: this might be error prone
153 if (!buildConfigurations().contains(configuration))
153 if (!m_buildConfigurationValues.contains(configuration))
154154 return;
155155
156 for (int i = 0; i != m_buildConfigurationValues.size(); ++i)
157 if (m_buildConfigurationValues.at(i)->name() == configuration->name()) {
158 delete m_buildConfigurationValues.at(i);
159 m_buildConfigurationValues.removeAt(i);
160 break;
161 }
156 m_buildConfigurationValues.removeOne(configuration);
162157
163158 for (int i = 0; i != m_buildSteps.size(); ++i)
164159 m_buildSteps.at(i)->removeBuildConfiguration(configuration->name());
161161 m_cleanSteps.at(i)->removeBuildConfiguration(configuration->name());
162162
163163 emit removedBuildConfiguration(this, configuration->name());
164 delete configuration;
164165}
165166
166167void Project::copyBuildConfiguration(const QString &source, const QString &dest)
  
141141 virtual QStringList includePaths(const QString &fileName) const;
142142 virtual QStringList frameworkPaths(const QString &fileName) const;
143143
144 static QString makeUnique(const QString &preferedName, const QStringList &usedNames);
144145signals:
145146 void fileListChanged();
146147
184184 virtual bool restoreSettingsImpl(PersistentSettingsReader &reader);
185185
186186private:
187 static QString makeUnique(const QString &preferedName, const QStringList &usedNames);
188187 QList<BuildStep *> m_buildSteps;
189188 QList<BuildStep *> m_cleanSteps;
190189 QMap<QString, QVariant> m_values;