diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java index a8c589011c3..1310c3a1275 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java @@ -2326,12 +2326,14 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider } public Set contributeErrorParsers(Set set){ - if(set == null) - set = new HashSet(); - - String ids[] = getErrorParserList(); - if(ids.length != 0) - set.addAll(Arrays.asList(ids)); + if(getErrorParserIds() != null){ + if(set == null) + set = new HashSet(); + + String ids[] = getErrorParserList(); + if(ids.length != 0) + set.addAll(Arrays.asList(ids)); + } return set; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java index d8b88e54ebb..55969a7765a 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java @@ -23,6 +23,7 @@ import java.util.Vector; import org.eclipse.cdt.build.core.scannerconfig.ICfgScannerConfigBuilderInfo2Set; import org.eclipse.cdt.build.internal.core.scannerconfig.CfgDiscoveredPathManager.PathInfoCache; +import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.settings.model.CIncludePathEntry; import org.eclipse.cdt.core.settings.model.CLibraryPathEntry; import org.eclipse.cdt.core.settings.model.CSourceEntry; @@ -1410,19 +1411,24 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild // } // return errorParsers; Set set = contributeErrorParsers(null, true); - String result[] = new String[set.size()]; - set.toArray(result); - return result; + if(set != null){ + String result[] = new String[set.size()]; + set.toArray(result); + return result; + } + return CCorePlugin.getDefault().getAllErrorParsersIDs(); } public Set contributeErrorParsers(Set set, boolean includeChildren) { String parserIDs = getErrorParserIdsAttribute(); - if(set == null) - set = new HashSet(); - if (parserIDs != null && parserIDs.length() != 0) { - StringTokenizer tok = new StringTokenizer(parserIDs, ";"); //$NON-NLS-1$ - while (tok.hasMoreElements()) { - set.add(tok.nextToken()); + if (parserIDs != null){ + if(set == null) + set = new HashSet(); + if(parserIDs.length() != 0) { + StringTokenizer tok = new StringTokenizer(parserIDs, ";"); //$NON-NLS-1$ + while (tok.hasMoreElements()) { + set.add(tok.nextToken()); + } } } @@ -1430,7 +1436,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild IResourceInfo[] rcInfos = getResourceInfos(); for(int i = 0; i < rcInfos.length; i++){ ResourceInfo rcInfo = (ResourceInfo)rcInfos[i]; - rcInfo.contributeErrorParsers(set); + set = rcInfo.contributeErrorParsers(set); } } return set; diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java index 04f5f2313f2..cf3924d9d09 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java @@ -1440,11 +1440,11 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo { } public Set contributeErrorParsers(Set set){ - if(set == null) - set = new HashSet(); +// if(set == null) +// set = new HashSet(); if(toolChain != null) - toolChain.contributeErrorParsers(this, set, true); + set = toolChain.contributeErrorParsers(this, set, true); return set; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceInfo.java index 1eacae2c4b6..0d72a91efa1 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceInfo.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceInfo.java @@ -469,11 +469,11 @@ public abstract class ResourceInfo extends BuildObject implements IResourceInfo public abstract Set contributeErrorParsers(Set set); protected Set contributeErrorParsers(ITool[] tools, Set set){ - if(set == null) - set = new HashSet(); +// if(set == null) +// set = new HashSet(); for(int i = 0; i < tools.length; i++){ Tool tool = (Tool)tools[i]; - tool.contributeErrorParsers(set); + set = tool.contributeErrorParsers(set); } return set; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java index 95ea938f764..bc90f0906ad 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java @@ -1717,12 +1717,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch } public Set contributeErrorParsers(Set set){ - if(set == null) - set = new HashSet(); - - String ids[] = getErrorParserList(); - if(ids.length != 0) - set.addAll(Arrays.asList(ids)); + if(getErrorParserIds() != null){ + if(set == null) + set = new HashSet(); + String ids[] = getErrorParserList(); + if(ids.length != 0) + set.addAll(Arrays.asList(ids)); + } return set; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java index 1cdb55f9806..3c37f092c9d 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java @@ -1377,24 +1377,25 @@ public class ToolChain extends HoldsOptions implements IToolChain, IBuildPropert } public Set contributeErrorParsers(FolderInfo info, Set set, boolean includeChildren){ - if(set == null) - set = new HashSet(); - String parserIDs = getErrorParserIdsAttribute(); - if (parserIDs != null && parserIDs.length() != 0) { - StringTokenizer tok = new StringTokenizer(parserIDs, ";"); //$NON-NLS-1$ - while (tok.hasMoreElements()) { - set.add(tok.nextToken()); + if (parserIDs != null){ + if(set == null) + set = new HashSet(); + if(parserIDs.length() != 0) { + StringTokenizer tok = new StringTokenizer(parserIDs, ";"); //$NON-NLS-1$ + while (tok.hasMoreElements()) { + set.add(tok.nextToken()); + } } } if(includeChildren){ ITool tools[] = info.getFilteredTools(); - info.contributeErrorParsers(tools, set); + set = info.contributeErrorParsers(tools, set); if(info.isRoot()){ Builder builder = (Builder)getBuilder(); - builder.contributeErrorParsers(set); + set = builder.contributeErrorParsers(set); } } return set; diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ExternalExtensionMacroSupplier.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ExternalExtensionMacroSupplier.java index 46ed2d72717..e54442bebc3 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ExternalExtensionMacroSupplier.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ExternalExtensionMacroSupplier.java @@ -215,7 +215,7 @@ public class ExternalExtensionMacroSupplier implements ICdtVariableSupplier{ if(macros == null || macros.length == 0) return macros; - ICdtVariable filtered[] = new IBuildMacro[macros.length]; + ICdtVariable filtered[] = new ICdtVariable[macros.length]; int filteredNum = 0; for(int i = 0; i < macros.length; i++){ ICdtVariable var = macros[i]; diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 2b57c820410..dc7f23b4170 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -281,11 +281,18 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { } public static CProjectDescriptionManager getInstance(){ + if(fInstance == null) + fInstance = getInstanceSynch(); + return fInstance; + } + + private static synchronized CProjectDescriptionManager getInstanceSynch(){ if(fInstance == null) fInstance = new CProjectDescriptionManager(); return fInstance; } + public void registerResourceListener() { assert fRcChangeHandler == null; fRcChangeHandler = new ResourceChangeHandler(); diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java index 0317cfd7453..6dbb2b42c6d 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java @@ -304,7 +304,7 @@ public class CConfigBasedDescriptor implements ICDescriptor { } public void saveProjectData() throws CoreException { - if(CConfigBasedDescriptorManager.getInstance().reconsile(this, fCfgDes.getProjectDescription())) + if(CProjectDescriptionManager.getInstance().getDescriptorManager().reconsile(this, fCfgDes.getProjectDescription())) fIsDirty = true; checkApply();