Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 395259

Summary: NPE thrown in LanguageSettingsProviderTab when selecting a newly created configuration
Product: [Tools] CDT Reporter: Caroline Klausecker <caroline.rieder>
Component: cdt-buildAssignee: Andrew Gvozdev <angvoz.dev>
Status: RESOLVED FIXED QA Contact: Andrew Gvozdev <angvoz.dev>
Severity: critical    
Priority: P3 CC: caroline.rieder, cdtdoug
Version: 8.1.0   
Target Milestone: 8.1.2   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
Patch cdtdoug: iplog+

Description Caroline Klausecker CLA 2012-11-28 05:08:51 EST
Version: 3.8.1
Build id: M20120914-1540

Steps to reproduce:

- Create a C Makefile project (which project type is not important here)
- select an appropriate toolchain 
- Open project properties > C/C++ General > Preprocessor Include Paths, Macros, etc.
- language settings providers are correctly selected for the "Default" configuration
- create a new Configuration using "Copy setting from Existing configuration 'Default'"
- [OK]
- Select the newly created Configuration
- The language settings providers are correctly shown and selected but
- The NPE shown below is thrown multiple times


java.lang.NullPointerException
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProviderTab.findProvider(LanguageSettingsProviderTab.java:328)
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProviderTab.isEditedForProject(LanguageSettingsProviderTab.java:294)
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProviderTab.access$0(LanguageSettingsProviderTab.java:287)
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProviderTab$ProvidersTableLabelProvider.getOverlayKeys(LanguageSettingsProviderTab.java:126)
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProvidersLabelProvider.getImage(LanguageSettingsProvidersLabelProvider.java:79)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.getImage(WrappedViewerLabelProvider.java:117)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:165)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
	at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:399)
	at org.eclipse.jface.viewers.CheckboxTableViewer.doUpdateItem(CheckboxTableViewer.java:168)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2167)
	at org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:711)
	at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:649)
	at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:636)
	at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1508)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1443)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1404)
	at org.eclipse.jface.viewers.CheckboxTableViewer.preservingSelection(CheckboxTableViewer.java:348)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1506)
	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1465)
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProviderTab.updateProvidersTable(LanguageSettingsProviderTab.java:1058)
	at org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProviderTab.updateData(LanguageSettingsProviderTab.java:1096)
	at org.eclipse.cdt.ui.newui.AbstractCPropertyTab.configChanged(AbstractCPropertyTab.java:230)
	at org.eclipse.cdt.ui.newui.AbstractCPropertyTab.handleTabEvent(AbstractCPropertyTab.java:564)
	at org.eclipse.cdt.ui.newui.AbstractPage.forEach(AbstractPage.java:1055)
	at org.eclipse.cdt.ui.newui.AbstractPage.cfgChanged(AbstractPage.java:1006)
	at org.eclipse.cdt.ui.newui.AbstractPage.handleConfigSelection(AbstractPage.java:471)
	at org.eclipse.cdt.ui.newui.AbstractPage.access$0(AbstractPage.java:427)
	at org.eclipse.cdt.ui.newui.AbstractPage$1.handleEvent(AbstractPage.java:279)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:158)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Comment 1 Caroline Klausecker CLA 2012-11-30 04:51:20 EST
Created attachment 224140 [details]
Patch

This patch fixes a NullPointerException which occurs when no initial providers exist when using a newly created configuration.
Comment 2 Andrew Gvozdev CLA 2012-12-01 05:08:56 EST
(In reply to comment #1)
> This patch fixes a NullPointerException which occurs when no initial providers
> exist when using a newly created configuration.
Thanks for the patch. I committed very similar change with some additions to master and cdt_8_1.

Case of "Import predefined" still does not work properly. I opened bug 395545 for that.
Comment 3 CDT Genie CLA 2013-02-27 11:56:48 EST
*** cdt git genie on behalf of Andrew Gvozdev ***

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

[*] http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=22e5b8c486ab25f193b98586e0cd6f72012988dd
Comment 4 CDT Genie CLA 2013-02-27 11:56:50 EST
*** cdt git genie on behalf of Andrew Gvozdev ***

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

[*] http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=0629926e0c0d11dd83bb3782fda2211e03c2209b