From b91dc8e2f525d2e91f3b20d911009a1940d69603 Mon Sep 17 00:00:00 2001 From: Oleg Krasilnikov Date: Mon, 15 Oct 2007 11:14:11 +0000 Subject: [PATCH] Bug #205460 : environment variables in project build properties do not get saved --- .../SetCProjectDescriptionOperation.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java index 78775696bf2..dcf961c2d67 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java @@ -15,6 +15,7 @@ import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICElementDelta; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent; +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICDescriptionDelta; import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager; import org.eclipse.cdt.internal.core.model.CModelOperation; @@ -64,11 +65,14 @@ public class SetCProjectDescriptionOperation extends CModelOperation { throw new CModelException(ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.17") + project.getName())); //$NON-NLS-1$ fNewDescriptionCache = new CProjectDescription(fSetDescription, true, el, creating); + + boolean envStates[] = getEnvStates(fNewDescriptionCache); try { mngr.setDescriptionApplying(project, fNewDescriptionCache); modified |= fNewDescriptionCache.applyDatas(context); } finally { mngr.clearDescriptionApplying(project); + setEnvStates(fNewDescriptionCache, envStates); } } else { modified = fOldDescriptionCache != null; @@ -150,4 +154,38 @@ public class SetCProjectDescriptionOperation extends CModelOperation { return false; } + private boolean[] getEnvStates(CProjectDescription pd) { + ICConfigurationDescription[] cfs = pd.getConfigurations(); + boolean[] result = new boolean[cfs.length]; + for (int i=0; i