1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 10:16:03 +02:00

bug 395259: NPE thrown in LanguageSettingsProviderTab when selecting a newly created configuration

This commit is contained in:
Andrew Gvozdev 2012-12-01 03:59:26 -05:00
parent 98c42dd5e2
commit 22e5b8c486

View file

@ -185,10 +185,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
} else { } else {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId()); List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
if (initialProviders != null) {
initialProvider = findProvider(id, initialProviders); initialProvider = findProvider(id, initialProviders);
} }
}
return initialProvider; return initialProvider;
} }
@ -203,7 +201,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) { if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId()); List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
isWorkingCopy = ! initialProviders.contains(provider); isWorkingCopy = initialProviders != null && ! initialProviders.contains(provider);
} }
} }
@ -325,11 +323,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
* Find provider with a given ID in the list or {@code null}. * Find provider with a given ID in the list or {@code null}.
*/ */
private ILanguageSettingsProvider findProvider(String id, List<ILanguageSettingsProvider> providers) { private ILanguageSettingsProvider findProvider(String id, List<ILanguageSettingsProvider> providers) {
if (providers != null) {
for (ILanguageSettingsProvider provider : providers) { for (ILanguageSettingsProvider provider : providers) {
if (provider.getId().equals(id)) { if (provider.getId().equals(id)) {
return provider; return provider;
} }
} }
}
return null; return null;
} }
@ -1073,6 +1073,15 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (!canBeVisible()) if (!canBeVisible())
return; 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 (rcDes!=null) {
if (page.isMultiCfg()) { if (page.isMultiCfg()) {
setAllVisible(false, null); setAllVisible(false, null);