diff options
| author | Andrew Gvozdev | 2012-12-01 08:59:26 +0000 |
|---|---|---|
| committer | Andrew Gvozdev | 2012-12-01 10:08:33 +0000 |
| commit | 0629926e0c0d11dd83bb3782fda2211e03c2209b (patch) | |
| tree | 563299268cccd04b26b64e0d59fcf7159473c0c8 | |
| parent | fdeda95079a0a99edc5aaeddecde89d7cb2d50f3 (diff) | |
| download | org.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.java | 23 |
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); |
