Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gvozdev2012-12-01 08:59:26 +0000
committerAndrew Gvozdev2012-12-01 10:08:33 +0000
commit0629926e0c0d11dd83bb3782fda2211e03c2209b (patch)
tree563299268cccd04b26b64e0d59fcf7159473c0c8
parentfdeda95079a0a99edc5aaeddecde89d7cb2d50f3 (diff)
downloadorg.eclipse.cdt-0629926e0c0d11dd83bb3782fda2211e03c2209b.tar.gz
org.eclipse.cdt-0629926e0c0d11dd83bb3782fda2211e03c2209b.tar.xz
org.eclipse.cdt-0629926e0c0d11dd83bb3782fda2211e03c2209b.zip
bug 395259: NPE thrown in LanguageSettingsProviderTab when selecting a newly created configuration
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java
index 5b9f0100a0e..56a24f728ce 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java
@@ -185,9 +185,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
} else {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
- if (initialProviders != null) {
- initialProvider = findProvider(id, initialProviders);
- }
+ initialProvider = findProvider(id, initialProviders);
}
return initialProvider;
}
@@ -203,7 +201,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
- isWorkingCopy = ! initialProviders.contains(provider);
+ isWorkingCopy = initialProviders != null && ! initialProviders.contains(provider);
}
}
@@ -325,9 +323,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
* Find provider with a given ID in the list or {@code null}.
*/
private ILanguageSettingsProvider findProvider(String id, List<ILanguageSettingsProvider> providers) {
- for (ILanguageSettingsProvider provider : providers) {
- if (provider.getId().equals(id)) {
- return provider;
+ if (providers != null) {
+ for (ILanguageSettingsProvider provider : providers) {
+ if (provider.getId().equals(id)) {
+ return provider;
+ }
}
}
return null;
@@ -1073,6 +1073,15 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (!canBeVisible())
return;
+ ICConfigurationDescription cfgDescription = getConfigurationDescription();
+ String cfgId = cfgDescription.getId();
+ if (!initialProvidersByCfg.containsKey(cfgId)) {
+ if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
+ List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
+ initialProvidersByCfg.put(cfgId, initialProviders);
+ }
+ }
+
if (rcDes!=null) {
if (page.isMultiCfg()) {
setAllVisible(false, null);

Back to the top